@agent-native/core 0.122.2 → 0.122.4
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/corpus/README.md +2 -2
- package/corpus/core/CHANGELOG.md +12 -0
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/agent/run-loop-with-resume.ts +12 -0
- package/corpus/core/src/cli/index.ts +2 -1
- package/corpus/core/src/cli/mcp.ts +13 -3
- package/corpus/core/src/cli/skills-content/rewind-skill.ts +36 -4
- package/corpus/core/src/cli/skills.ts +250 -37
- package/corpus/core/src/cli/telemetry-routing.ts +57 -0
- package/corpus/core/src/cli/telemetry.ts +3 -3
- package/corpus/core/src/integrations/a2a-continuation-processor.ts +182 -0
- package/corpus/core/src/integrations/a2a-continuations-store.ts +122 -12
- package/corpus/core/src/integrations/integration-campaign-recovery.ts +127 -0
- package/corpus/core/src/integrations/integration-campaigns-store.ts +1039 -0
- package/corpus/core/src/integrations/integration-durable-dispatch.ts +28 -3
- package/corpus/core/src/integrations/pending-tasks-retry-job.ts +8 -0
- package/corpus/core/src/integrations/plugin.ts +453 -35
- package/corpus/core/src/integrations/webhook-handler.ts +469 -11
- package/corpus/core/src/mcp/screen-memory-stdio.ts +21 -2
- package/corpus/templates/content/app/components/editor/DocumentEditor.tsx +7 -3
- package/corpus/templates/content/app/components/editor/body-hydration.ts +10 -0
- package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +1 -0
- package/corpus/templates/content/app/root.tsx +12 -1
- package/corpus/templates/content/changelog/2026-07-23-new-pages-open-immediately-while-slow-network-work-continues.md +6 -0
- package/corpus/templates/content/changelog/2026-07-25-database-preview-actions-open-reliably.md +6 -0
- package/corpus/templates/content/e2e/playwright.config.ts +1 -1
- package/dist/agent/run-loop-with-resume.d.ts +7 -1
- package/dist/agent/run-loop-with-resume.d.ts.map +1 -1
- package/dist/agent/run-loop-with-resume.js +7 -0
- package/dist/agent/run-loop-with-resume.js.map +1 -1
- package/dist/cli/index.js +3 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/mcp.d.ts.map +1 -1
- package/dist/cli/mcp.js +12 -3
- package/dist/cli/mcp.js.map +1 -1
- package/dist/cli/skills-content/rewind-skill.d.ts +1 -1
- package/dist/cli/skills-content/rewind-skill.d.ts.map +1 -1
- package/dist/cli/skills-content/rewind-skill.js +36 -4
- package/dist/cli/skills-content/rewind-skill.js.map +1 -1
- package/dist/cli/skills.d.ts +2 -0
- package/dist/cli/skills.d.ts.map +1 -1
- package/dist/cli/skills.js +191 -40
- package/dist/cli/skills.js.map +1 -1
- package/dist/cli/telemetry-routing.d.ts +2 -0
- package/dist/cli/telemetry-routing.d.ts.map +1 -0
- package/dist/cli/telemetry-routing.js +54 -0
- package/dist/cli/telemetry-routing.js.map +1 -0
- package/dist/cli/telemetry.js +3 -3
- package/dist/cli/telemetry.js.map +1 -1
- package/dist/collab/awareness.d.ts +2 -2
- package/dist/collab/awareness.d.ts.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/collab/struct-routes.d.ts +1 -1
- package/dist/file-upload/actions/upload-image.d.ts +3 -3
- package/dist/integrations/a2a-continuation-processor.d.ts +14 -0
- package/dist/integrations/a2a-continuation-processor.d.ts.map +1 -1
- package/dist/integrations/a2a-continuation-processor.js +134 -1
- package/dist/integrations/a2a-continuation-processor.js.map +1 -1
- package/dist/integrations/a2a-continuations-store.d.ts +23 -0
- package/dist/integrations/a2a-continuations-store.d.ts.map +1 -1
- package/dist/integrations/a2a-continuations-store.js +99 -13
- package/dist/integrations/a2a-continuations-store.js.map +1 -1
- package/dist/integrations/integration-campaign-recovery.d.ts +16 -0
- package/dist/integrations/integration-campaign-recovery.d.ts.map +1 -0
- package/dist/integrations/integration-campaign-recovery.js +94 -0
- package/dist/integrations/integration-campaign-recovery.js.map +1 -0
- package/dist/integrations/integration-campaigns-store.d.ts +121 -0
- package/dist/integrations/integration-campaigns-store.d.ts.map +1 -0
- package/dist/integrations/integration-campaigns-store.js +784 -0
- package/dist/integrations/integration-campaigns-store.js.map +1 -0
- package/dist/integrations/integration-durable-dispatch.d.ts +3 -0
- package/dist/integrations/integration-durable-dispatch.d.ts.map +1 -1
- package/dist/integrations/integration-durable-dispatch.js +22 -3
- package/dist/integrations/integration-durable-dispatch.js.map +1 -1
- package/dist/integrations/pending-tasks-retry-job.d.ts.map +1 -1
- package/dist/integrations/pending-tasks-retry-job.js +6 -0
- package/dist/integrations/pending-tasks-retry-job.js.map +1 -1
- package/dist/integrations/plugin.d.ts.map +1 -1
- package/dist/integrations/plugin.js +325 -18
- package/dist/integrations/plugin.js.map +1 -1
- package/dist/integrations/webhook-handler.d.ts +16 -1
- package/dist/integrations/webhook-handler.d.ts.map +1 -1
- package/dist/integrations/webhook-handler.js +368 -13
- package/dist/integrations/webhook-handler.js.map +1 -1
- package/dist/mcp/screen-memory-stdio.d.ts +2 -0
- package/dist/mcp/screen-memory-stdio.d.ts.map +1 -1
- package/dist/mcp/screen-memory-stdio.js +12 -2
- package/dist/mcp/screen-memory-stdio.js.map +1 -1
- package/dist/notifications/routes.d.ts +3 -3
- package/dist/observability/routes.d.ts +1 -1
- package/dist/progress/routes.d.ts +1 -1
- package/dist/provider-api/actions/custom-provider-registration.d.ts +14 -14
- package/dist/provider-api/actions/provider-api.d.ts +8 -8
- package/dist/resources/handlers.d.ts +1 -1
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- package/package.json +1 -1
- package/src/agent/run-loop-with-resume.ts +12 -0
- package/src/cli/index.ts +2 -1
- package/src/cli/mcp.ts +13 -3
- package/src/cli/skills-content/rewind-skill.ts +36 -4
- package/src/cli/skills.ts +250 -37
- package/src/cli/telemetry-routing.ts +57 -0
- package/src/cli/telemetry.ts +3 -3
- package/src/integrations/a2a-continuation-processor.ts +182 -0
- package/src/integrations/a2a-continuations-store.ts +122 -12
- package/src/integrations/integration-campaign-recovery.ts +127 -0
- package/src/integrations/integration-campaigns-store.ts +1039 -0
- package/src/integrations/integration-durable-dispatch.ts +28 -3
- package/src/integrations/pending-tasks-retry-job.ts +8 -0
- package/src/integrations/plugin.ts +453 -35
- package/src/integrations/webhook-handler.ts +469 -11
- package/src/mcp/screen-memory-stdio.ts +21 -2
package/dist/cli/skills.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/cli/skills.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EACL,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,yBAAyB,GAG1B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,cAAc,EACd,UAAU,EACV,6BAA6B,GAC9B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,OAAO,EAAiB,MAAM,yBAAyB,CAAC;AACjE,OAAO,EACL,4BAA4B,EAC5B,2BAA2B,GAC5B,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,uBAAuB,EACvB,gBAAgB,EAChB,2BAA2B,EAC3B,2BAA2B,EAC3B,6BAA6B,EAC7B,qBAAqB,EACrB,IAAI,EACJ,wBAAwB,EACxB,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAqB,MAAM,gBAAgB,CAAC;AAEvE,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,6BAA6B,EAC7B,qBAAqB,EACrB,wBAAwB,EACxB,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,GACvB,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,MAAM,EAAE;QACN,SAAS,EAAE,QAAQ;QACnB,QAAQ,EAAE,yBAAyB,CAAC;YAClC,aAAa,EAAE,CAAC;YAChB,EAAE,EAAE,QAAQ;YACZ,WAAW,EAAE,QAAQ;YACrB,WAAW,EACT,sFAAsF;YACxF,MAAM,EAAE;gBACN,GAAG,EAAE,iCAAiC;gBACtC,MAAM,EAAE,qCAAqC;aAC9C;YACD,GAAG,EAAE,EAAE,UAAU,EAAE,qBAAqB,EAAE;YAC1C,IAAI,EAAE;gBACJ,IAAI,EAAE,OAAO;gBACb,KAAK,EACH,0GAA0G;aAC7G;YACD,QAAQ,EAAE;gBACR;oBACE,EAAE,EAAE,cAAc;oBAClB,MAAM,EAAE,mBAAmB;oBAC3B,IAAI,EAAE,SAAS;oBACf,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;oBAC9B,gBAAgB,EAAE,OAAO;iBAC1B;aACF;YACD,MAAM,EAAE;gBACN;oBACE,IAAI,EAAE,eAAe;oBACrB,UAAU,EAAE,UAAU;oBACtB,QAAQ,EAAE,QAAQ;iBACnB;aACF;YACD,YAAY,EAAE;gBACZ,cAAc;gBACd,oBAAoB;gBACpB,eAAe;gBACf,aAAa;gBACb,cAAc;gBACd,aAAa;gBACb,aAAa;aACd;SACF,CAAC;QACF,aAAa,EAAE,eAAe;KAC/B;IACD,OAAO,EAAE;QACP,SAAS,EAAE,SAAS;QACpB,QAAQ,EAAE,yBAAyB,CAAC;YAClC,aAAa,EAAE,CAAC;YAChB,EAAE,EAAE,SAAS;YACb,WAAW,EAAE,SAAS;YACtB,WAAW,EACT,uHAAuH;YACzH,MAAM,EAAE;gBACN,GAAG,EAAE,kCAAkC;gBACvC,MAAM,EAAE,sCAAsC;aAC/C;YACD,GAAG,EAAE,EAAE,UAAU,EAAE,sBAAsB,EAAE;YAC3C,IAAI,EAAE;gBACJ,IAAI,EAAE,OAAO;gBACb,KAAK,EACH,8LAA8L;aACjM;YACD,QAAQ,EAAE;gBACR;oBACE,EAAE,EAAE,mBAAmB;oBACvB,MAAM,EAAE,gBAAgB;oBACxB,IAAI,EAAE,GAAG;iBACV;gBACD;oBACE,EAAE,EAAE,qBAAqB;oBACzB,MAAM,EAAE,2BAA2B;oBACnC,IAAI,EAAE,cAAc;iBACrB;aACF;YACD,MAAM,EAAE;gBACN;oBACE,IAAI,EAAE,gBAAgB;oBACtB,UAAU,EAAE,UAAU;oBACtB,QAAQ,EAAE,SAAS;iBACpB;aACF;YACD,YAAY,EAAE;gBACZ,cAAc;gBACd,oBAAoB;gBACpB,eAAe;gBACf,aAAa;gBACb,cAAc;gBACd,aAAa;gBACb,aAAa;aACd;SACF,CAAC;QACF,aAAa,EAAE,gBAAgB;KAChC;IACD,MAAM,EAAE;QACN,SAAS,EAAE,QAAQ;QACnB,eAAe,EAAE,IAAI;QACrB,QAAQ,EAAE,yBAAyB,CAAC;YAClC,aAAa,EAAE,CAAC;YAChB,EAAE,EAAE,QAAQ;YACZ,WAAW,EAAE,QAAQ;YACrB,WAAW,EACT,iIAAiI;YACnI,MAAM,EAAE;gBACN,GAAG,EAAE,gCAAgC;gBACrC,MAAM,EAAE,oCAAoC;aAC7C;YACD,GAAG,EAAE,EAAE,UAAU,EAAE,qBAAqB,EAAE;YAC1C,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YACtB,QAAQ,EAAE;gBACR;oBACE,EAAE,EAAE,eAAe;oBACnB,IAAI,EAAE,GAAG;oBACT,WAAW,EACT,6FAA6F;iBAChG;aACF;YACD,MAAM,EAAE;gBACN;oBACE,IAAI,EAAE,eAAe;oBACrB,UAAU,EAAE,UAAU;oBACtB,QAAQ,EAAE,QAAQ;iBACnB;aACF;YACD,YAAY,EAAE,CAAC,aAAa,EAAE,cAAc,EAAE,aAAa,CAAC;SAC7D,CAAC;QACF,aAAa,EAAE,eAAe;KAC/B;IACD,MAAM,EAAE;QACN,SAAS,EAAE,oBAAoB;QAC/B,WAAW,EAAE;YACX,aAAa,EAAE,2BAA2B;SAC3C;QACD,QAAQ,EAAE,yBAAyB,CAAC;YAClC,aAAa,EAAE,CAAC;YAChB,EAAE,EAAE,QAAQ;YACZ,WAAW,EAAE,QAAQ;YACrB,WAAW,EACT,6FAA6F;YAC/F,MAAM,EAAE;gBACN,GAAG,EAAE,iCAAiC;gBACtC,MAAM,EAAE,qCAAqC;aAC9C;YACD,GAAG,EAAE,EAAE,UAAU,EAAE,qBAAqB,EAAE;YAC1C,IAAI,EAAE;gBACJ,IAAI,EAAE,OAAO;gBACb,KAAK,EACH,0GAA0G;aAC7G;YACD,QAAQ,EAAE;gBACR;oBACE,EAAE,EAAE,oBAAoB;oBACxB,MAAM,EAAE,yBAAyB;oBACjC,IAAI,EAAE,SAAS;iBAChB;gBACD;oBACE,EAAE,EAAE,aAAa;oBACjB,MAAM,EAAE,uBAAuB;oBAC/B,IAAI,EAAE,SAAS;iBAChB;aACF;YACD,MAAM,EAAE;gBACN;oBACE,IAAI,EAAE,2BAA2B;oBACjC,UAAU,EAAE,UAAU;oBACtB,QAAQ,EAAE,oBAAoB;iBAC/B;gBACD;oBACE,IAAI,EAAE,oBAAoB;oBAC1B,UAAU,EAAE,UAAU;oBACtB,QAAQ,EAAE,aAAa;iBACxB;aACF;YACD,YAAY,EAAE;gBACZ,cAAc;gBACd,oBAAoB;gBACpB,eAAe;gBACf,aAAa;gBACb,cAAc;gBACd,aAAa;gBACb,aAAa;aACd;SACF,CAAC;QACF,aAAa,EAAE,2BAA2B;KAC3C;IACD,cAAc,EAAE;QACd,SAAS,EAAE,aAAa;QACxB,WAAW,EAAE;YACX,cAAc,EAAE,qBAAqB;YACrC,gBAAgB,EAAE,uBAAuB;SAC1C;QACD,uEAAuE;QACvE,6EAA6E;QAC7E,4EAA4E;QAC5E,wEAAwE;QACxE,UAAU,EAAE;YACV,aAAa,EAAE;gBACb,yBAAyB,EAAE,sBAAsB;gBACjD,sBAAsB,EAAE,mBAAmB;gBAC3C,gCAAgC,EAAE,6BAA6B;gBAC/D,wBAAwB,EAAE,qBAAqB;gBAC/C,0BAA0B,EAAE,uBAAuB;gBACnD,2BAA2B,EAAE,wBAAwB;aACtD;YACD,cAAc,EAAE;gBACd,yBAAyB,EAAE,sBAAsB;gBACjD,0BAA0B,EAAE,uBAAuB;gBACnD,2BAA2B,EAAE,wBAAwB;aACtD;SACF;QACD,QAAQ,EAAE,yBAAyB,CAAC;YAClC,aAAa,EAAE,CAAC;YAChB,EAAE,EAAE,cAAc;YAClB,WAAW,EAAE,mBAAmB;YAChC,WAAW,EACT,gLAAgL;YAClL,MAAM,EAAE;gBACN,GAAG,EAAE,+BAA+B;gBACpC,MAAM,EAAE,mCAAmC;aAC5C;YACD,GAAG,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,oBAAoB,CAAC,EAAE;YAC5D,IAAI,EAAE;gBACJ,IAAI,EAAE,OAAO;gBACb,KAAK,EACH,sMAAsM;aACzM;YACD,QAAQ,EAAE;gBACR;oBACE,EAAE,EAAE,aAAa;oBACjB,MAAM,EAAE,oBAAoB;oBAC5B,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,4JAA4J;iBAC/J;gBACD;oBACE,EAAE,EAAE,cAAc;oBAClB,MAAM,EAAE,qBAAqB;oBAC7B,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,4IAA4I;iBAC/I;gBACD;oBACE,EAAE,EAAE,gBAAgB;oBACpB,IAAI,EAAE,cAAc;oBACpB,WAAW,EACT,mIAAmI;iBACtI;aACF;YACD,MAAM,EAAE;gBACN;oBACE,IAAI,EAAE,oBAAoB;oBAC1B,UAAU,EAAE,UAAU;oBACtB,QAAQ,EAAE,aAAa;iBACxB;gBACD;oBACE,IAAI,EAAE,qBAAqB;oBAC3B,UAAU,EAAE,UAAU;oBACtB,QAAQ,EAAE,cAAc;iBACzB;gBACD;oBACE,IAAI,EAAE,uBAAuB;oBAC7B,UAAU,EAAE,UAAU;oBACtB,QAAQ,EAAE,gBAAgB;iBAC3B;aACF;YACD,YAAY,EAAE;gBACZ,cAAc;gBACd,oBAAoB;gBACpB,eAAe;gBACf,aAAa;gBACb,cAAc;gBACd,aAAa;gBACb,aAAa;aACd;SACF,CAAC;QACF,aAAa,EAAE,qBAAqB;KACrC;IACD,cAAc,EAAE;QACd,SAAS,EAAE,cAAc;QACzB,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,yBAAyB,CAAC;YAClC,aAAa,EAAE,CAAC;YAChB,EAAE,EAAE,cAAc;YAClB,WAAW,EAAE,eAAe;YAC5B,WAAW,EACT,0FAA0F;YAC5F,MAAM,EAAE;gBACN,GAAG,EAAE,uCAAuC;gBAC5C,MAAM,EAAE,2CAA2C;aACpD;YACD,GAAG,EAAE,EAAE,UAAU,EAAE,2BAA2B,EAAE;YAChD,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YACtB,QAAQ,EAAE;gBACR;oBACE,EAAE,EAAE,qBAAqB;oBACzB,IAAI,EAAE,GAAG;iBACV;aACF;YACD,MAAM,EAAE;gBACN;oBACE,IAAI,EAAE,qBAAqB;oBAC3B,UAAU,EAAE,UAAU;oBACtB,QAAQ,EAAE,cAAc;iBACzB;aACF;YACD,YAAY,EAAE,CAAC,aAAa,EAAE,cAAc,CAAC;SAC9C,CAAC;QACF,aAAa,EAAE,qBAAqB;KACrC;CAiBF,CAAC;AAKF,MAAM,CAAC,MAAM,gCAAgC,GAAG,yBAAyB,CAAC;AAE1E,MAAM,0BAA0B,GAAG;IACjC,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,QAAQ;IACf,kBAAkB,EAAE,QAAQ;IAC5B,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,QAAQ;IACf,kBAAkB,EAAE,QAAQ;IAC5B,qBAAqB,EAAE,QAAQ;IAC/B,qBAAqB,EAAE,QAAQ;IAC/B,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,SAAS;IACf,SAAS,EAAE,SAAS;IACpB,eAAe,EAAE,SAAS;IAC1B,qBAAqB,EAAE,SAAS;IAChC,sBAAsB,EAAE,SAAS;IACjC,MAAM,EAAE,QAAQ;IAChB,eAAe,EAAE,QAAQ;IACzB,cAAc,EAAE,QAAQ;IACxB,qBAAqB,EAAE,QAAQ;IAC/B,MAAM,EAAE,QAAQ;IAChB,WAAW,EAAE,QAAQ;IACrB,WAAW,EAAE,QAAQ;IACrB,oBAAoB,EAAE,QAAQ;IAC9B,aAAa,EAAE,QAAQ;IACvB,mBAAmB,EAAE,QAAQ;IAC7B,oBAAoB,EAAE,QAAQ;IAC9B,gBAAgB,EAAE,QAAQ;IAC1B,qBAAqB,EAAE,QAAQ;IAC/B,iCAAiC,EAAE,QAAQ;IAC3C,cAAc,EAAE,cAAc;IAC9B,aAAa,EAAE,cAAc;IAC7B,cAAc,EAAE,cAAc;IAC9B,eAAe,EAAE,cAAc;IAC/B,gBAAgB,EAAE,cAAc;IAChC,SAAS,EAAE,cAAc;IACzB,iBAAiB,EAAE,cAAc;IACjC,aAAa,EAAE,cAAc;IAC7B,mBAAmB,EAAE,cAAc;IACnC,oBAAoB,EAAE,cAAc;IACpC,WAAW,EAAE,cAAc;IAC3B,WAAW,EAAE,cAAc;IAC3B,UAAU,EAAE,cAAc;IAC1B,WAAW,EAAE,cAAc;IAC3B,2BAA2B,EAAE,cAAc;IAC3C,cAAc,EAAE,cAAc;IAC9B,oBAAoB,EAAE,cAAc;IACpC,IAAI,EAAE,cAAc;IACpB,gBAAgB,EAAE,cAAc;IAChC,eAAe,EAAE,cAAc;IAC/B,2BAA2B,EAAE,cAAc;CACA,CAAC;AAE9C,MAAM,kCAAkC,GAAG;IACzC,MAAM,EAAE,CAAC,QAAQ,EAAE,kBAAkB,EAAE,qBAAqB,CAAC;IAC7D,OAAO,EAAE;QACP,MAAM;QACN,WAAW;QACX,eAAe;QACf,qBAAqB;QACrB,sBAAsB;KACvB;IACD,MAAM,EAAE,CAAC,eAAe,EAAE,cAAc,EAAE,qBAAqB,CAAC;IAChE,MAAM,EAAE;QACN,oBAAoB;QACpB,aAAa;QACb,mBAAmB;QACnB,gBAAgB;QAChB,iCAAiC;KAClC;IACD,cAAc,EAAE;QACd,aAAa;QACb,cAAc;QACd,gBAAgB;QAChB,mBAAmB;QACnB,WAAW;QACX,YAAY;KACb;IACD,cAAc,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,eAAe,CAAC;CACd,CAAC;AAEhD,MAAM,aAAa,GAA6B;IAC9C,aAAa,EAAE,aAAa;IAC5B,iBAAiB,EAAE,iBAAiB;IACpC,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,eAAe;IACvB,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;IACpB,gBAAgB,EAAE,0BAA0B;CAC7C,CAAC;AAEF,MAAM,YAAY,GAA6B;IAC7C,aAAa,EAAE,6BAA6B;IAC5C,iBAAiB,EAAE,6BAA6B;IAChD,KAAK,EAAE,iDAAiD;IACxD,MAAM,EAAE,oBAAoB;IAC5B,MAAM,EAAE,wCAAwC;IAChD,QAAQ,EAAE,mDAAmD;IAC7D,gBAAgB,EAAE,2CAA2C;CAC9D,CAAC;AAIF,MAAM,cAAc,GAAe;IACjC,aAAa;IACb,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,gBAAgB;CACjB,CAAC;AACF,MAAM,yBAAyB,GAA+B;IAC5D,OAAO;IACP,aAAa;IACb,IAAI;CACL,CAAC;AACF,MAAM,gCAAgC,GAA+B;IACnE,OAAO;IACP,aAAa;CACd,CAAC;AACF,2EAA2E;AAC3E,8EAA8E;AAC9E,+EAA+E;AAC/E,4EAA4E;AAC5E,gDAAgD;AAChD,MAAM,4BAA4B,GAAG,IAAI,GAAG,CAA2B;IACrE,QAAQ;IACR,UAAU;IACV,gBAAgB;IAChB,QAAQ;CACT,CAAC,CAAC;AACH,MAAM,+BAA+B,GAGjC;IACF,aAAa,EAAE,aAAa;IAC5B,iBAAiB,EAAE,aAAa;IAChC,KAAK,EAAE,uBAAuB;IAC9B,MAAM,EAAE,UAAU;IAClB,EAAE,EAAE,IAAI;CACT,CAAC;AACF,MAAM,8BAA8B,GAClC;IACE,aAAa,EACX,oEAAoE;IACtE,iBAAiB,EACf,oEAAoE;IACtE,KAAK,EACH,gKAAgK;IAClK,MAAM,EAAE,UAAU;IAClB,EAAE,EAAE,oHAAoH;CACzH,CAAC;AA4RJ,SAAS,yBAAyB,CAChC,KAAyB;IAEzB,MAAM,GAAG,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACxC,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,OAAO,0BAA0B,CAAC,GAAG,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,YAAY,CAAC,KAAyB;IAC7C,OAAO,OAAO,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,uBAAuB,CAC9B,KAAyE;IAEzE,OAAO,OAAO,CAAC,KAAK,IAAI,WAAW,IAAI,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,6BAA6B,CACpC,KAAyE;IAEzE,OAAO,OAAO,CAAC,KAAK,IAAI,iBAAiB,IAAI,KAAK,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;AAC/E,CAAC;AAED,SAAS,yBAAyB,CAChC,QAA4B;IAE5B,OAAO,QAAQ,KAAK,cAAc,IAAI,QAAQ,KAAK,SAAS,CAAC;AAC/D,CAAC;AAED,SAAS,sBAAsB,CAC7B,QAA4B,EAC5B,IAAiC;IAEjC,OAAO,IAAI,KAAK,aAAa,IAAI,yBAAyB,CAAC,QAAQ,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,kBAAkB,CACzB,KAAsD;IAEtD,OAAO,aAAa,IAAI,KAAK,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;AAC9E,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CACxB,KAAsD;IAEtD,OAAO,YAAY,IAAI,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3E,CAAC;AAED,SAAS,iBAAiB,CACxB,KAAsD;IAEtD,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC;AAED;;;;;GAKG;AACH,SAAS,qBAAqB,CAAC,MAAc;IAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC/C,IAAI,UAAU,KAAK,aAAa;QAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACzD,IAAI,UAAU,KAAK,cAAc,IAAI,UAAU,KAAK,eAAe,EAAE,CAAC;QACpE,OAAO,CAAC,cAAc,CAAC,CAAC;IAC1B,CAAC;IACD,IACE,UAAU,KAAK,gBAAgB;QAC/B,UAAU,KAAK,WAAW;QAC1B,UAAU,KAAK,iBAAiB;QAChC,UAAU,KAAK,aAAa,EAC5B,CAAC;QACD,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC5B,CAAC;IACD,IACE,UAAU,KAAK,oBAAoB;QACnC,UAAU,KAAK,iCAAiC,EAChD,CAAC;QACD,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAChC,CAAC;IACD,IACE,UAAU,KAAK,aAAa;QAC5B,UAAU,KAAK,mBAAmB;QAClC,UAAU,KAAK,oBAAoB,EACnC,CAAC;QACD,OAAO,CAAC,aAAa,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,eAAe,CAAC,KAA6B;IACpD,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAClC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAC5C,IAAI,GAAG,KAAK,gCAAgC;YAAE,SAAS;QACvD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAClB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,sBAAsB,CAAC,QAAgB,EAAE,KAAa;IAC7D,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;QAAE,OAAO,QAAQ,CAAC;IACnC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACtD,IAAI,CAAC,KAAK;QAAE,OAAO,GAAG,KAAK,OAAO,QAAQ,EAAE,CAAC;IAC7C,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,EAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;AAC9E,CAAC;AAED,SAAS,wBAAwB,CAAC,KAGjC;IACC,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QACjC,OAAO;;;;;;;;;;;;;;;;gEAgBqD,CAAC;IAC/D,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QACjC,OAAO;;;KAGN,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,EAAE;4EAC0B,CAAC;IAC3E,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,2BAA2B,CAAC,KAGpC;IACC,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QACjC,OAAO;;;;;;;;;;8EAUmE,CAAC;IAC7E,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QACjC,OAAO;;;KAGN,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,EAAE;oEACkB,CAAC;IACnE,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,+BAA+B,CACtC,QAAgB,EAChB,KAIC;IAED,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,IAAI,KAAK,CAAC,UAAU,KAAK,cAAc,EAAE,CAAC;QACxC,KAAK,GAAG,wBAAwB,CAAC;YAC/B,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QAC1C,KAAK,GAAG,2BAA2B,CAAC;YAClC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC,CAAC;IACL,CAAC;IACD,OAAO,sBAAsB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,oBAAoB,CAC3B,UAA6B,EAC7B,OAAO,GAAoD,EAAE;IAE7D,MAAM,KAAK,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAC9C,MAAM,MAAM,GAA2B;QACrC,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,+BAA+B,CAAC,KAAK,CAAC,aAAa,EAAE;YACtE,UAAU;YACV,IAAI,EAAE,OAAO,CAAC,QAAQ;YACtB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC;QACF,GAAG,kBAAkB,CAAC,KAAK,CAAC;KAC7B,CAAC;IACF,KAAK,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CACrD,kBAAkB,CAAC,KAAK,CAAC,CAC1B,EAAE,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,GAAG,+BAA+B,CAAC,aAAa,EAAE;YACjE,UAAU;YACV,IAAI,EAAE,OAAO,CAAC,QAAQ;YACtB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;IACL,CAAC;IACD,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAsC,EAAE,CAAC;IAClD,KAAK,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAChE,MAAM,KAAK,GAAG;YACZ,UAAU,EAAE,aAAa;YACzB,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;SACjC,CAAC;QACF,GAAG,CAAC,SAAS,CAAC,GAAG;YACf,UAAU;YACV,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,WAAW;YACvC,SAAS;YACT,MAAM,EACJ,uBAAuB,CAAC,KAAK,CAAC;gBAC9B,6BAA6B,CAAC,KAAK,CAAC;gBACpC,sBAAsB,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC;gBAClD,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;YACtD,KAAK;YACL,WAAW,EAAE,eAAe,CAAC,KAAK,CAAC;YACnC,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,4BAA4B,CACnC,WAAgC;IAEhC,MAAM,GAAG,GAAsC,EAAE,CAAC;IAClD,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,gBAAgB,CACvB,GAAW,EACX,MAAyB,EACzB,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;IAEtC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CACvB,MAAM,EACN,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM,CAC1D,CAAC;IACF,IAAI,CAAC;QACH,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACvC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACxD,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC;QACD,MAAM,QAAQ,GAAyB;YACrC,aAAa,EAAE,CAAC;YAChB,MAAM,EAAE,cAAc;YACtB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,WAAW;YACX,cAAc,EAAE,4CAA4C,MAAM,CAAC,SAAS,EAAE;YAC9E,aAAa,EAAE,+CAA+C,MAAM,CAAC,SAAS,EAAE;YAChF,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1D,CAAC;QACF,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,gCAAgC,CAAC,EACpD,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EACxC,OAAO,CACR,CAAC;QACF,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,CAAC;YACH,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACV,MAAM,IAAI,KAAK,CACb,0CAA0C,GAAG,KAAK,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,EAC3E,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,OAAO,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,iCAAiC;IACxC,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE;YACL;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,MAAM;gBACZ,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;aAC5B;YACD;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,MAAM;gBACZ,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;aAC5B;YACD;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS;gBACf,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;aAC5B;YACD;gBACE,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,WAAW;gBACjB,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;aAC5B;SACF;QACD,UAAU,EAAE,YAAY;QACxB,UAAU,EAAE,YAAY;QACxB,IAAI,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC;KAChC,CAAC;AACJ,CAAC;AAED,SAAS,6BAA6B,CAAC,OAAe;IACpD,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,oCAAoC,CAC3C,QAA4B,EAC5B,IAAiC;IAEjC,OAAO,QAAQ,KAAK,SAAS,IAAI,IAAI,KAAK,aAAa,CAAC;AAC1D,CAAC;AAED,SAAS,8BAA8B,CAAC,OAAe,EAAE,QAAgB;IACvE,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACzD,IAAI,iBAAiB,GAAG,gBAAgB,CAAC;IACzC,IAAI,CAAC;QACH,iBAAiB,GAAG,EAAE,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,KAAK,EAAE,IAAI,KAAK,QAAQ;YAAE,MAAM,KAAK,CAAC;IAC5C,CAAC;IACD,OAAO,gBAAgB,UAAU,CAAC,QAAQ,CAAC;SACxC,MAAM,CAAC,iBAAiB,CAAC;SACzB,MAAM,CAAC,WAAW,CAAC;SACnB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AACpB,CAAC;AAED,SAAS,8BAA8B,CACrC,QAAiB,EACjB,OAAe;IAEf,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/D,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS;QAAE,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC;IAEzD,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACrE,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACzE,MAAM,QAAQ,GAAG,iCAAiC,EAAE,CAAC;IACrD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtE,UAAU,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;IACpC,CAAC;IACD,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAa,EAAE,EAAE;QACxD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QACtE,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,OAAO;YACL,GAAG,IAAI;YACP,MAAM,EAAE;gBACN,GAAG,MAAM;gBACT,IAAI,EAAE,cAAc;gBACpB,YAAY,EACV,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ,IAAI,MAAM,CAAC,YAAY;oBAC5D,CAAC,CAAC,MAAM,CAAC,YAAY;oBACrB,CAAC,CAAC,8BAA8B,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC;gBACxD,WAAW,EACT,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ;oBACpC,CAAC,CAAC,MAAM,CAAC,WAAW;oBACpB,CAAC,CAAC,gBAAgB;aACvB;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,UAAU,CAAC,IAAI,CAAC;IACvB,IAAI,UAAU,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACxC,UAAU,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;IAC9C,CAAC;IACD,IAAI,UAAU,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACxC,UAAU,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;IAC9C,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpE,UAAU,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;IAClC,CAAC;IACD,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC;IAC1B,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,8BAA8B,CACrC,OAAe,EACf,OAAO,GAAyB,EAAE;IAElC,MAAM,YAAY,GAAG,6BAA6B,CAAC,OAAO,CAAC,CAAC;IAC5D,IAAI,QAAQ,GAAY,EAAE,CAAC;IAC3B,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;QAChE,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CACb,mBAAmB,YAAY,KAAK,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,CAC9D,CAAC;QACJ,CAAC;IACH,CAAC;IACD,MAAM,QAAQ,GAAG,8BAA8B,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,EAAE,CAAC,aAAa,CACd,YAAY,EACZ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EACxC,OAAO,CACR,CAAC;IACJ,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;GAIG;AACH,SAAS,yBAAyB,CAChC,KAAa,EACb,KAAyB,EACzB,OAAe;IAEf,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,OAAO,CAAC;IAClC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,IAAI,KAAK,KAAK,aAAa,IAAI,KAAK,KAAK,iBAAiB,EAAE,CAAC;YAC3D,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QACtB,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU;YAC3B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC;YAC7C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;IACD,IACE,KAAK,KAAK,QAAQ;QAClB,KAAK,KAAK,UAAU;QACpB,KAAK,KAAK,gBAAgB,EAC1B,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,2BAA2B,CAClC,KAAa,EACb,KAAyB,EACzB,OAAe;IAEf,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,OAAO,CAAC;IAClC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,IAAI,KAAK,KAAK,OAAO;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QACxE,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QACtB,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU;YAC3B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC;YAC/C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,MAAM,MAAM,GACV,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,2BAA2B,CAAC,SAAiB;IACpD,IAAI,SAAS,KAAK,aAAa,EAAE,CAAC;QAChC,OAAO;;;;;;;;;CASV,CAAC;IACA,CAAC;IACD,IAAI,SAAS,KAAK,cAAc,EAAE,CAAC;QACjC,OAAO;;;;;;;;CAQV,CAAC;IACA,CAAC;IACD,IAAI,SAAS,KAAK,gBAAgB,EAAE,CAAC;QACnC,OAAO;;;;;;;;;CASV,CAAC;IACA,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,SAAS,0BAA0B,CAAC,KASnC;IACC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAC3B,oBAAoB,CAAC,KAAK,CAAC,UAAU,EAAE;QACrC,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,MAAM,EAAE,KAAK,CAAC,MAAM;KACrB,CAAC,CACH,CAAC,MAAM,CACN,CAAC,MAAM,EAAE,EAAE,CACT,CAAC,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAC3E,CAAC;IACF,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,yBAAyB,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC1E,MAAM,YAAY,GAAG,2BAA2B,CAC9C,KAAK,EACL,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,OAAO,CACd,CAAC;QACF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;YAC9C,IAAI,CAAC,KAAK,CAAC,MAAM;gBAAE,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClB,MAAM,OAAO,GAAG,2BAA2B,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC9D,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,MAAM,CAAC,SAAS,KAAK,CAAC,CAAC;gBACtE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;oBAClB,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC7D,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;gBAClD,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAW;IACvC,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,MAAM,IAAI,GAAG,CAAC,OAAe,EAAE,MAAM,GAAG,EAAE,EAAE,EAAE;QAC5C,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YACrE,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;YAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACf,SAAS;YACX,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,GAAG,KAAK,gCAAgC;gBAAE,SAAS;YAC1E,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC,CAAC;IACF,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAClC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,wBAAwB,CAC/B,GAAW;IAEX,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,gCAAgC,CAAC,CAAC;IAC9D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QAC1D,IACE,MAAM;YACN,MAAM,CAAC,MAAM,KAAK,cAAc;YAChC,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ;YACpC,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,EACtC,CAAC;YACD,OAAO,MAA8B,CAAC;QACxC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IACV,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,OAAO;IACd,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;AAC1C,CAAC;AAED,SAAS,gBAAgB,CAAC,KAIzB;IAKC,MAAM,KAAK,GAIN,EAAE,CAAC;IACR,MAAM,SAAS,GAAG,IAAI,GAAG,CAA2B,KAAK,CAAC,OAAO,CAAC,CAAC;IACnE,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,CAAC,MAAgC,EAAE,EAAE,CACrD,UAAU,IAAI,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CACV,IAAwB,EACxB,KAAyB,EACzB,MAAc,EACd,EAAE;QACF,IAAI,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAChD,CAAC,CAAC;IAEF,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACrC,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YACvB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACzE,CAAC;QACD,IAAI,SAAS,CAAC,aAAa,CAAC,IAAI,SAAS,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC7D,GAAG,CACD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,EAC7C,SAAS,EACT,aAAa,CACd,CAAC;QACJ,CAAC;QACD,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YACpB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;YACpE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,UAAU;YAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAC7E,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;QACvB,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YACvB,GAAG,CACD,OAAO,CAAC,GAAG,CAAC,UAAU;gBACpB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC;gBAC7C,CAAC,CAAC,SAAS,EACb,MAAM,EACN,OAAO,CACR,CAAC;YACF,GAAG,CACD,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,EACtD,MAAM,EACN,OAAO,CACR,CAAC;QACJ,CAAC;QACD,IAAI,SAAS,CAAC,aAAa,CAAC,IAAI,SAAS,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC7D,GAAG,CACD,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,EACvD,MAAM,EACN,aAAa,CACd,CAAC;QACJ,CAAC;QACD,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YACpB,MAAM,MAAM,GACV,OAAO,CAAC,GAAG,CAAC,mBAAmB;gBAC/B,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACvD,GAAG,CACD,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,EACvD,MAAM,EACN,IAAI,CACL,CAAC;YACF,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QAC5B,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACzE,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAChC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,yBAAyB,GAAG,IAAI,GAAG,CAAC;IACxC,UAAU;IACV,WAAW;IACX,eAAe;IACf,qBAAqB;IACrB,WAAW;IACX,gBAAgB;IAChB,oBAAoB;CACrB,CAAC,CAAC;AAEH,SAAS,wBAAwB,CAAC,KAAyB;IACzD,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,OAAO,yBAAyB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,kBAAkB;IACzB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,wBAAwB,CAC/B,YAAmD;IAEnD,OAAO,IAAI,CAAC,IAAI,CACd,kBAAkB,EAAE,EACpB,KAAK,EACL,WAAW,EACX,YAAY,EACZ,SAAS,EACT,QAAQ,CACT,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QAC1D,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACnE,OAAO,MAAiC,CAAC;QAC3C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IACV,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,eAAe,CAAC,GAAW;IAClC,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,WAAW,CAAC,GAAwC;IAC3D,OAAO,OAAO,GAAG,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACzD,CAAC;AAED,SAAS,wBAAwB,CAC/B,GAAwC;IAExC,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC;IAC1C,IACE,WAAW;QACX,OAAO,WAAW,KAAK,QAAQ;QAC/B,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;QAC3B,OAAQ,WAAuC,CAAC,aAAa,KAAK,QAAQ,EAC1E,CAAC;QACD,OAAQ,WAAsC,CAAC,aAAa,CAAC;IAC/D,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,4BAA4B,CACnC,GAAwC;IAExC,KAAK,MAAM,KAAK,IAAI,CAAC,cAAc,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,EAAE,CAAC;QAC5E,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QAC1B,IACE,IAAI;YACJ,OAAO,IAAI,KAAK,QAAQ;YACxB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YACpB,oBAAoB,IAAI,IAAI,EAC5B,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,8BAA8B,CACrC,GAAwC;IAExC,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC;IAC1C,IACE,CAAC,WAAW;QACZ,OAAO,WAAW,KAAK,QAAQ;QAC/B,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAC1B,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,QAAQ,GAAI,WAAuC,CAAC,QAAQ,CAAC;IACnE,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,eAAe,GAAI,QAAoC,CAAC,eAAe,CAAC;IAC9E,OAAO,eAAe,KAAK,UAAU,IAAI,eAAe,KAAK,SAAS;QACpE,CAAC,CAAC,eAAe;QACjB,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,SAAS,2BAA2B,CAClC,aAAqB,EACrB,iBAAyB;IAEzB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IACzD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,SAAS,CAAC;IAClD,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACzE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;YAAE,SAAS;QACnC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACrD,IAAI,WAAW,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,KAAK,iBAAiB,EAAE,CAAC;YAClE,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAChE,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QACvD,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,SAAS,sBAAsB,CAAC,QAAgB;IAM9C,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrC,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,GAAG,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC;QACxD,IAAI,iBAAiB,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;YACnE,MAAM,gBAAgB,GAAG,2BAA2B,CAClD,OAAO,EACP,iBAAiB,CAClB,CAAC;YACF,IAAI,gBAAgB,EAAE,CAAC;gBACrB,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;YACtD,CAAC;QACH,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,MAAM,KAAK,OAAO;YAAE,MAAM;QAC9B,OAAO,GAAG,MAAM,CAAC;IACnB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,gCAAgC,CACvC,WAAmB;IAEnB,MAAM,GAAG,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IACzC,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IACzD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC;QAChE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,cAAc,GAAG,8BAA8B,CAAC,GAAG,CAAC,CAAC;IAC3D,IAAI,cAAc;QAAE,OAAO,cAAc,CAAC;IAE1C,MAAM,SAAS,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;IAC/D,MAAM,gBAAgB,GAAG,EAAE,CAAC,UAAU,CACpC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,UAAU,CAAC,CAC9C,CAAC;IACF,IAAI,CAAC,SAAS,IAAI,gBAAgB;QAAE,OAAO,UAAU,CAAC;IAEtD,MAAM,wBAAwB,GAC5B,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;QACtE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;QACpE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACrE,OAAO,wBAAwB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1D,CAAC;AAED,SAAS,sBAAsB,CAAC,GAAW;IACzC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,OAAO,EAAE;SACN,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;SACzC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;SACtC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;SAC1B,IAAI,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,qBAAqB,CAAC,SAAiB,EAAE,SAAiB;IACjE,MAAM,QAAQ,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAC/C,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;IACnD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/C,IAAI,aAAa,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC9D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACjD,IAAI,aAAa,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IACxD,CAAC;IACD,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,uBAAuB,CAC9B,UAAkB,EAClB,UAAkB;IAElB,MAAM,MAAM,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAClD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACtC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAC5B,qBAAqB,CACnB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,EAC5B,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAC7B,CACF,CAAC;AACJ,CAAC;AAED,SAAS,6BAA6B,CACpC,MAAwB,EACxB,OAAyB;IAEzB,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,CAAC;IACzE,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IAElE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC/D,MAAM,SAAS,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,UAAU,GAAG,wBAAwB,CAAC,gBAAgB,CAAC,CAAC;QAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAC1B,SAAS,CAAC,gBAAgB,EAC1B,SAAS,EACT,QAAQ,CACT,CAAC;QACF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;YAAE,OAAO,EAAE,CAAC;QAC1C,OAAO;YACL;gBACE,IAAI,EAAE,gBAAgB;gBACtB,WAAW,EAAE,sCAAsC;gBACnD,YAAY,EAAE,gBAAgB;gBAC9B,IAAI,EAAE,UAAU;gBAChB,UAAU;gBACV,WAAW,EAAE,SAAS,CAAC,aAAa;gBACpC,aAAa,EAAE,SAAS,CAAC,aAAa;gBACtC,gBAAgB,EAAE,SAAS,CAAC,gBAAgB;gBAC5C,OAAO,EAAE,uBAAuB,CAAC,UAAU,EAAE,UAAU,CAAC;gBACxD,UAAU,EAAE,sBAAsB,CAAC,UAAU,CAAC,CAAC,MAAM;aACtD;SACF,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,gCAAgC,CAAC,OAAO,CAAC,CAAC;IAC/D,IAAI,CAAC,YAAY;QAAE,OAAO,EAAE,CAAC;IAC7B,MAAM,UAAU,GAAG,wBAAwB,CAAC,YAAY,CAAC,CAAC;IAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC3D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,EAAE,CAAC;IAC1C,OAAO;QACL;YACE,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,aAAa,YAAY,uBAAuB;YAC7D,YAAY;YACZ,IAAI,EAAE,UAAU;YAChB,UAAU;YACV,WAAW,EAAE,OAAO;YACpB,OAAO,EAAE,uBAAuB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxD,UAAU,EAAE,sBAAsB,CAAC,UAAU,CAAC,CAAC,MAAM;SACtD;KACF,CAAC;AACJ,CAAC;AAED,SAAS,0BAA0B,CACjC,UAAkB,EAClB,UAAkB;IAElB,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,KAAK,MAAM,KAAK,IAAI,sBAAsB,CAAC,UAAU,CAAC,EAAE,CAAC;QACvD,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACpD,IACE,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC;YAC7B,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,cAAc,EAAE,EAC7C,CAAC;YACD,SAAS;QACX,CAAC;QACD,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,cAAc,EAAE;YACtD,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,4BAA4B,CACnC,MAA+B,EAC/B,MAAe;IAEf,MAAM,OAAO,GAA4B,EAAE,CAAC;IAC5C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,OAAO;YAAE,SAAS;QAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,0BAA0B,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,CAAC,IAAI,CAAC;YACX,GAAG,KAAK;YACR,OAAO,EAAE,CAAC,MAAM;SACjB,CAAC,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,6BAA6B,CACpC,aAAqB,EACrB,gBAAwB;IAExB,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACzE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC;QAAE,OAAO;IAE5C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IAEzD,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;YAC1B,IAAI,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,MAAM;gBAAE,OAAO;YACjD,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,0BAA0B,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;YACtD,OAAO;QACT,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IAEV,IAAI,CAAC;QACH,EAAE,CAAC,WAAW,CACZ,MAAM,EACN,QAAQ,EACR,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAClD,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,CAAC;YACH,EAAE,CAAC,MAAM,CAAC,eAAe,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,yBAAyB,CAAC,WAAmB;IACpD,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACpE,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACpE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACvE,OAAO;IACT,CAAC;IACD,IAAI,CAAC;QACH,IAAI,EAAE,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,cAAc,EAAE;YAAE,OAAO;QAC3D,0BAA0B,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;AACZ,CAAC;AAED,SAAS,wBAAwB,CAAC,MAA+B;IAC/D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC;YAClD,MAAM,GAAG,GAAG,aAAa,KAAK,CAAC,aAAa,EAAE,CAAC;YAC/C,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAS;YAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,6BAA6B,CAC3B,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,gBAAgB,CACvB,CAAC;YACF,kBAAkB,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YACxC,yBAAyB,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAC/C,kBAAkB,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;YAC3C,yBAAyB,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;YAClD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;YACvD,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;oBACrE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;wBAAE,SAAS;oBACnC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC9C,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;wBACrD,kBAAkB,CAAC,MAAM,CAAC,CAAC;wBAC3B,yBAAyB,CAAC,MAAM,CAAC,CAAC;oBACpC,CAAC;gBACH,CAAC;YACH,CAAC;YACD,SAAS;QACX,CAAC;QAED,MAAM,GAAG,GAAG,cAAc,KAAK,CAAC,WAAW,EAAE,CAAC;QAC9C,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACtC,yBAAyB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAwB;IAClD,IAAI,wBAAwB,CAAC,MAAM,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,CAAC;IACvD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,OAAQ,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAyB,CAAC,MAAM,CACrE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAC1D,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,yBAAyB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACvD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,2BAA2B,MAAM,CAAC,MAAM,oDAAoD,CAC7F,CAAC;IACJ,CAAC;IACD,IAAI,uBAAuB,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CACb,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,WAAW,kFAAkF,CACrI,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AAED,SAAS,oBAAoB,CAC3B,MAAwB;IAExB,OAAO,MAAM,CAAC,aAAa;QACzB,CAAC,CAAC,CAAC,MAAM,CAAC,KAA2B,CAAC;QACtC,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,qBAAqB,CAC5B,MAAwB;IAExB,OAAO,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,sBAAsB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC5E,CAAC;AAED,SAAS,yBAAyB,CAChC,MAAwB,EACxB,OAAyB;IAEzB,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,aAAa,GAAG,4BAA4B,CAAC,WAAW,CAAC,CAAC;IAChE,MAAM,KAAK,GAAG,gBAAgB,CAAC;QAC7B,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE;QACzC,OAAO,EAAE,qBAAqB,CAAC,MAAM,CAAC;QACtC,MAAM,EAAE,oBAAoB,CAAC,MAAM,CAAC;KACrC,CAAC,CAAC;IACH,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IAEnC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;YAClD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;YACnD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS;YAC/D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;gBAAE,SAAS;YACzD,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAC1B,MAAM,KAAK,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;YACxC,MAAM,QAAQ,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC;YAC/C,MAAM,WAAW,GACf,oBAAoB,CAAC,MAAM,CAAC,UAAU,EAAE;gBACtC,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBAC5B,MAAM,EAAE,QAAQ,EAAE,MAAM;aACzB,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC;YACjC,MAAM,aAAa,GACjB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAChE,MAAM,CAAC,IAAI,CAAC;gBACV,UAAU,EAAE,WAAW,CAAC,UAAU;gBAClC,WAAW,EAAE,WAAW,CAAC,WAAW;gBACpC,SAAS,EAAE,WAAW,CAAC,SAAS;gBAChC,IAAI,EAAE,GAAG;gBACT,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,UAAU,EAAE,WAAW,CAAC,WAAW;gBACnC,aAAa;gBACb,YAAY,EAAE,QAAQ,EAAE,WAAW;gBACnC,OAAO,EAAE,aAAa,KAAK,WAAW,CAAC,WAAW;gBAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,cAAc;gBAC5C,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBAC5B,MAAM,EAAE,QAAQ,EAAE,MAAM;aACzB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC1B,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CACrE,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAC/B,MAA2B,EAC3B,MAAe;IAEf,MAAM,OAAO,GAAwB,EAAE,CAAC;IACxC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO;YAAE,SAAS;QAC7C,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,CAAC,UAAU,EAAE;YACpD,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACpB,IAAI,CAAC,MAAM;YAAE,SAAS;QACtB,IAAI,CAAC,MAAM;YAAE,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC;YACX,GAAG,KAAK;YACR,OAAO,EAAE,CAAC,MAAM;YAChB,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW;YAChE,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW;SAC/D,CAAC,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAe;IACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,CAAC;IACtC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAY,CAAC;IACjC,MAAM,GAAG,GAAe,EAAE,CAAC;IAC3B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,SAAS;QACxC,MAAM,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QAC/B,IAAI,CAAE,OAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC;YAAE,SAAS;QAClD,MAAM,MAAM,GAAG,EAAc,CAAC;QAC9B,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,SAAS;QAC/B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,aAAa,CAAC,KAA+B;IACpD,OAAQ,OAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,kCAAkC,CACzC,MAAe;IAEf,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,CAAC;IACtC,MAAM,IAAI,GAAG,IAAI,GAAG,EAA4B,CAAC;IACjD,MAAM,GAAG,GAA+B,EAAE,CAAC;IAC3C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,SAAS;QACxC,MAAM,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QAC/B,IAAI,UAAU,GAAoC,IAAI,CAAC;QACvD,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YAChB,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;aAAM,IAAK,OAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YAC9C,MAAM,MAAM,GAAG,EAAc,CAAC;YAC9B,UAAU,GAAG,MAAM,KAAK,iBAAiB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC;QACrE,CAAC;QACD,IAAI,CAAC,UAAU;YAAE,SAAS;QAC1B,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;YAAE,SAAS;QACnC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACrB,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,sBAAsB,CAC7B,MAAc,EACd,WAAW,GAAG,KAAK;IAEnB,IAAI,WAAW;QACb,OAAO,kCAAkC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QAC/C,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACpC,IAAI,CAAC,EAAE;YAAE,OAAO,EAAE,CAAC;QACnB,IAAI,EAAE,KAAK,KAAK;YAAE,OAAO,yBAAyB,CAAC;QACnD,IAAI,EAAE,KAAK,IAAI;YAAE,OAAO,CAAC,IAAa,CAAC,CAAC;QACxC,OAAO,cAAc,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IACH,OAAO,kCAAkC,CAAC,MAAM,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,aAAa,CAAC,WAAoB;IACzC,OAAO,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,gCAAgC,CAAC;AACzE,CAAC;AAED,SAAS,mBAAmB,CAC1B,OAAmC,EACnC,WAAoB;IAEpB,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,OAAO,CAAC,MAAM,CACnB,CAAC,MAAM,EAAsB,EAAE,CAC7B,aAAa,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAC3D,CAAC;IACJ,CAAC;IACD,+EAA+E;IAC/E,4EAA4E;IAC5E,yEAAyE;IACzE,sDAAsD;IACtD,MAAM,GAAG,GAA+B,EAAE,CAAC;IAC3C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,yBAAyB,CAAC,QAAQ,CAAC,MAAM,CAAC;YACzD,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,4BAA4B,CAAC,GAAG,CAAC,MAAM,CAAC;gBACxC,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,SAAS,CAAC;QAChB,IAAI,QAAQ,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,mBAAmB,CAC1B,WAAoB;IAEpB,OAAO,aAAa,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACjD,KAAK,EAAE,MAAM;QACb,KAAK,EACH,WAAW,IAAI,aAAa,CAAC,MAAM,CAAC;YAClC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC;YACvB,CAAC,CAAC,+BAA+B,CAAC,MAAM,CAAC;QAC7C,IAAI,EACF,WAAW,IAAI,aAAa,CAAC,MAAM,CAAC;YAClC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC;YACtB,CAAC,CAAC,8BAA8B,CAAC,MAAM,CAAC;KAC7C,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,4BAA4B,GAAG,kBAAkB,CAAC;AACxD,MAAM,0BAA0B,GAAG,gBAAgB,CAAC;AAEpD,MAAM,6BAA6B,GAAyC;IAC1E;QACE,KAAK,EAAE,aAAa;QACpB,KAAK,EAAE,aAAa;QACpB,IAAI,EAAE,2IAA2I;KAClJ;IACD;QACE,KAAK,EAAE,cAAc;QACrB,KAAK,EAAE,cAAc;QACrB,IAAI,EAAE,sHAAsH;KAC7H;IACD;QACE,KAAK,EAAE,gBAAgB;QACvB,KAAK,EAAE,gBAAgB;QACvB,IAAI,EAAE,2GAA2G;KAClH;IACD;QACE,KAAK,EAAE,QAAQ;QACf,KAAK,EAAE,QAAQ;QACf,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW;KACtD;IACD;QACE,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,SAAS;QAChB,IAAI,EAAE,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW;KACvD;IACD;QACE,KAAK,EAAE,QAAQ;QACf,KAAK,EAAE,QAAQ;QACf,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW;KACtD;IACD;QACE,KAAK,EAAE,oBAAoB;QAC3B,KAAK,EAAE,oBAAoB;QAC3B,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW;KACtD;IACD;QACE,KAAK,EAAE,aAAa;QACpB,KAAK,EAAE,aAAa;QACpB,IAAI,EAAE,gFAAgF;KACvF;IACD;QACE,KAAK,EAAE,cAAc;QACrB,KAAK,EAAE,cAAc;QACrB,IAAI,EAAE,mBAAmB,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,WAAW;KAC/D;CACF,CAAC;AAEF,MAAM,4BAA4B,GAAG;IACnC,aAAa;IACb,cAAc;IACd,gBAAgB;CACjB,CAAC;AAEF,SAAS,yBAAyB,CAAC,OAAyB;IAC1D,OAAO,IAAI,GAAG,CACZ,CAAC,OAAO,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACvD,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAC5B,CACF,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAChC,OAAyB;IAEzB,MAAM,MAAM,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAClD,OAAO,6BAA6B,CAAC,MAAM,CACzC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CACpC,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CACzB,OAAyB;IAEzB,IAAI,OAAO,CAAC,WAAW,KAAK,KAAK;QAAE,OAAO,EAAE,CAAC;IAC7C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,OAAO,CAAC,OAAO,CAAC,kBAAkB,IAAI,EAAE,CAAC;SACtC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACf,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,WAAW,EAAE,KAAK,CAAC,WAAW;KAC/B,CAAC,CAAC;SACF,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QAChB,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACpE,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAyB;IACjD,OAAO,IAAI,GAAG,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,wBAAwB,CAC/B,OAAyB;IAEzB,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACjD,KAAK,EAAE,KAAK,CAAC,IAAI;QACjB,KAAK,EAAE,KAAK,CAAC,IAAI;QACjB,IAAI,EACF,KAAK,CAAC,WAAW,IAAI,iDAAiD;KACzE,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,kBAAkB,CACzB,OAAO,GAAqB,EAAE;IAE9B,OAAO;QACL,GAAG,yBAAyB,CAAC,OAAO,CAAC;QACrC,GAAG,wBAAwB,CAAC,OAAO,CAAC;KACrC,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAAC,OAAyB;IAC1D,MAAM,SAAS,GAAG,IAAI,GAAG,CACvB,kBAAkB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CACxD,CAAC;IACF,OAAO,4BAA4B,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,0BAA0B,CAAC,UAAoB;IACtD,OAAO,GAAG,0BAA0B,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AAChE,CAAC;AAED,SAAS,yBAAyB,CAAC,MAAc;IAC/C,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,0BAA0B,CAAC;QAAE,OAAO,IAAI,CAAC;IAChE,OAAO,MAAM;SACV,KAAK,CAAC,0BAA0B,CAAC,MAAM,CAAC;SACxC,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;SACxC,MAAM,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,yBAAyB,CAAC,OAAe;IAChD,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,qBAAqB,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,gCAAgC;IACvC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,qBAAqB,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,wBAAwB,GAC5B,mDAAmD,CAAC;AAEtD,SAAS,2BAA2B;IAClC,OAAO,4EAA4E,CAAC;AACtF,CAAC;AAED,SAAS,yBAAyB;IAChC,OAAO,2CAA2C,CAAC;AACrD,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,OAAwC;IAExC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC;QACjC,OAAO,EACL,6DAA6D;YAC7D,0EAA0E;YAC1E,sEAAsE;YACtE,+CAA+C;YAC/C,iBAAiB,wBAAwB,IAAI;YAC7C,YAAY,OAAO,CAAC,YAAY,KAAK,OAAO,CAAC,YAAY,+BAA+B;QAC1F,YAAY,EAAE,KAAK;KACpB,CAAC,CAAC;IACH,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,KAAK,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,YAAY,CAAC,MAAwB,EAAE,OAAyB;IACvE,IAAI,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IACjD,IAAI,OAAO,CAAC,aAAa;QAAE,OAAO,OAAO,CAAC,aAAa,EAAE,CAAC;IAC1D,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,KAAK,GAAG;QAAE,OAAO,KAAK,CAAC;IAC7D,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;AACzD,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,OAAkC;IAElC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW;QACjC,CAAC,CAAC,gDAAgD;YAChD,wDAAwD;QAC1D,CAAC,CAAC,mDAAmD;YACnD,wDAAwD,CAAC;IAC7D,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC;QACrC,OAAO;QACP,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,aAAa,EAAE,OAAO,CAAC,cAAc;QACrC,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;IACH,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,kCAAkC,CAAC,MAAM,CAAC,CAAC;AACpD,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,OAAiC;IAEjC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC;QAChC,OAAO,EAAE,4CAA4C;QACrD,OAAO,EAAE;YACP;gBACE,KAAK,EAAE,SAAS;gBAChB,KAAK,EAAE,SAAS;gBAChB,IAAI,EAAE,2FAA2F;aAClG;YACD;gBACE,KAAK,EAAE,MAAM;gBACb,KAAK,EAAE,MAAM;gBACb,IAAI,EAAE,2EAA2E;aAClF;SACF;QACD,YAAY,EAAE,OAAO,CAAC,YAAY;KACnC,CAAC,CAAC;IACH,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;AACnD,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,OAAoC;IAEpC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC;QAChC,OAAO,EAAE,4CAA4C;QACrD,OAAO,EAAE;YACP;gBACE,KAAK,EAAE,QAAQ;gBACf,KAAK,EAAE,6CAA6C;gBACpD,IAAI,EAAE,+GAA+G;aACtH;YACD;gBACE,KAAK,EAAE,aAAa;gBACpB,KAAK,EAAE,kBAAkB;gBACzB,IAAI,EAAE,mGAAmG;aAC1G;YACD;gBACE,KAAK,EAAE,aAAa;gBACpB,KAAK,EAAE,wBAAwB;gBAC/B,IAAI,EAAE,mDAAmD;aAC1D;SACF;QACD,YAAY,EAAE,OAAO,CAAC,WAAW;KAClC,CAAC,CAAC;IACH,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,wBAAwB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,KAAK,UAAU,mBAAmB;IAChC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC;QAC9B,OAAO,EAAE,yBAAyB;QAClC,WAAW,EAAE,iCAAiC;QAC9C,QAAQ,CAAC,KAAK;YACZ,IAAI,CAAC;gBACH,qBAAqB,CAAC,KAAK,CAAC,CAAC;gBAC7B,OAAO,SAAS,CAAC;YACnB,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,OAAO,GAAG,EAAE,OAAO,IAAI,wCAAwC,CAAC;YAClE,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IACH,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;AAC/B,CAAC;AAED,KAAK,UAAU,2BAA2B;IACxC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC;QACjC,OAAO,EACL,8EAA8E;QAChF,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;IACH,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,KAAK,CAAC,MAAM,CAAC,sCAAsC,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;AACzB,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,OAAkC;IAElC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC;QACrC,OAAO,EACL,qDAAqD;YACrD,mCAAmC;QACrC,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,aAAa,EAAE,OAAO,CAAC,cAAc;QACrC,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;IACH,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,CAAC;IACtC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC;AAC9E,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,MAAwB,EACxB,OAAyB,EACzB,WAAoB;IAEpB,IAAI,MAAM,CAAC,cAAc,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;QAC5D,MAAM,OAAO,GAAG,mBAAmB,CACjC,sBAAsB,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EAClD,WAAW,CACZ,CAAC;QACF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,WAAW;gBACT,CAAC,CAAC,yJAAyJ;gBAC3J,CAAC,CAAC,oIAAoI,CACzI,CAAC;QACJ,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,cAAc,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,IAAI,gBAAgB,CAAC;IACzD,MAAM,QAAQ,GAAG,kCAAkC,CACjD,MAAM,MAAM,CAAC;QACX,cAAc;QACd,OAAO,EAAE,mBAAmB,CAAC,WAAW,CAAC;QACzC,WAAW;KACZ,CAAC,CACH,CAAC;IACF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,IAAI,CAAC;YACH,6BAA6B,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;QAChE,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAyB;IACzD,MAAM,UAAU,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC/C,IAAI,CAAC,UAAU,IAAI,UAAU,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC5D,IACE,UAAU,KAAK,OAAO;QACtB,UAAU,KAAK,YAAY;QAC3B,UAAU,KAAK,aAAa;QAC5B,UAAU,KAAK,OAAO,EACtB,CAAC;QACD,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,IACE,UAAU,KAAK,aAAa;QAC5B,UAAU,KAAK,YAAY;QAC3B,UAAU,KAAK,QAAQ;QACvB,UAAU,KAAK,YAAY,EAC3B,CAAC;QACD,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,MAAM,IAAI,KAAK,CACb,kEAAkE,CACnE,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAc;IACzC,OAAO,yBAAyB,CAAC,MAAM,CAAC,KAAK,cAAc,CAAC;AAC9D,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAiB;IAC5C,OAAO,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,8BAA8B,CAAC,MAAc;IACpD,OAAO,yBAAyB,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,+BAA+B,CAAC,OAAiB;IACxD,OAAO,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,sBAAsB,CAAC,UAAgC;IAC9D,OAAO,OAAO,CACZ,UAAU,EAAE,IAAI,CACd,CAAC,IAAI,EAAE,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,cAAc,CAC7D,CACF,CAAC;AACJ,CAAC;AAED,SAAS,6BAA6B,CACpC,UAAgC;IAEhC,OAAO,OAAO,CACZ,UAAU,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CACxB,yBAAyB,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAC3D,CACF,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAChC,MAAc,EACd,UAAgC;IAEhC,OAAO,CACL,8BAA8B,CAAC,MAAM,CAAC;QACtC,6BAA6B,CAAC,UAAU,CAAC,CAC1C,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAAC,UAAgC;IAC/D,OAAO,OAAO,CACZ,UAAU,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC7C,OAAO,CACL,UAAU,KAAK,cAAc;YAC7B,UAAU,KAAK,eAAe;YAC9B,yBAAyB,CAAC,UAAU,CAAC,KAAK,cAAc,CACzD,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAED,SAAS,2BAA2B,CAClC,QAAkB,EAClB,OAAyB;IAEzB,MAAM,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,iBAAiB,GAAa,EAAE,CAAC;IACvC,MAAM,gBAAgB,GAAa,EAAE,CAAC;IAEtC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACvC,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YACxB,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9B,SAAS;QACX,CAAC;QACD,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7B,SAAS;QACX,CAAC;QACD,MAAM,IAAI,KAAK,CACb,kBAAkB,GAAG,oDAAoD,CAC1E,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,aAAa,GAAG,CAAC,aAAa,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAC;IACxE,MAAM,qBAAqB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAC3D,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAClC,CAAC;IACF,IAAI,qBAAqB,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM,EAAE,CAAC;QAC1D,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC3B,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,CAAC;IACrC,CAAC;IACD,GAAG,CAAC,IAAI,CACN,GAAG,iBAAiB,CAAC,MAAM,CACzB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAClE,CACF,CAAC;IACF,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,GAAG,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,MAAwB,EACxB,OAAyB;IAEzB,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,eAAe,EAAE,MAAM,EAAE,CAAC;QACrD,OAAO,2BAA2B,CAAC,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,QAAQ,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,MAAM;YAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACpC,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrD,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACpD,OAAO,CAAC,0BAA0B,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,IAAI,eAAe,CAAC;IACvD,MAAM,aAAa,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAClD,8EAA8E;IAC9E,6EAA6E;IAC7E,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,4BAA4B,EAAE;QACrD,cAAc,EAAE,aAAa,CAAC,MAAM;QACpC,SAAS,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;KACjE,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC;QAC5B,cAAc,EAAE,yBAAyB,CAAC,OAAO,CAAC;QAClD,OAAO,EAAE,aAAa;KACvB,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpD,OAAO,2BAA2B,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAc;IAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACtB,IAAI,OAAO,GAAkB,MAAM,CAAC;IACpC,IAAI,IAAI,GAAG,IAAI,CAAC;IAChB,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC7D,OAAO,GAAG,MAAM,CAAC;QACjB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;SAAM,IACL,KAAK,KAAK,MAAM;QAChB,KAAK,KAAK,KAAK;QACf,KAAK,KAAK,QAAQ;QAClB,KAAK,KAAK,QAAQ,EAClB,CAAC;QACD,OAAO,GAAG,KAAK,CAAC;QAChB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;SAAM,IAAI,KAAK,EAAE,CAAC;QACjB,OAAO,GAAG,KAAK,CAAC;IAClB,CAAC;IAED,MAAM,GAAG,GAAqB;QAC5B,OAAO;QACP,MAAM,EAAE,KAAK;QACb,cAAc,EAAE,KAAK;QACrB,KAAK,EAAE,MAAM;QACb,aAAa,EAAE,KAAK;QACpB,GAAG,EAAE,KAAK;QACV,MAAM,EAAE,KAAK;QACb,SAAS,EAAE,KAAK;QAChB,YAAY,EAAE,IAAI;QAClB,GAAG,EAAE,IAAI;QACT,OAAO,EAAE,IAAI;KACd,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,MAAM,GAAG,GAAG,CAAC,IAAY,EAAsB,EAAE;YAC/C,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;gBACjB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBACvB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBAClC,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,GAAG,CAAC,CAAC;gBAChD,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC;gBAC/B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACzC,IAAI,CAAC,KAAK;oBAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,GAAG,CAAC,CAAC;gBAC1D,OAAO,KAAK,CAAC;YACf,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC;QACF,IAAI,KAAyB,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YAC5C,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;YACnB,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC;QAC5B,CAAC;aAAM,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YAClD,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;YACnB,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC;QAC5B,CAAC;aAAM,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YAC7C,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;YACnB,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC;QAC5B,CAAC;aAAM,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YAClD,GAAG,CAAC,eAAe,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QAChE,CAAC;aAAM,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YAC7C,GAAG,CAAC,eAAe,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QAChE,CAAC;aAAM,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YAClD,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;YAClB,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC;QAC3B,CAAC;aAAM,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,SAAS;YAAE,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;aAChE,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,KAAK,SAAS;YAAE,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;aACjE,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK,SAAS;YAC5C,GAAG,CAAC,QAAQ,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;aAC5C,IAAI,GAAG,KAAK,UAAU;YAAE,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC;aAChD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,eAAe;YACnD,GAAG,CAAC,QAAQ,GAAG,aAAa,CAAC;aAC1B,IAAI,GAAG,KAAK,eAAe,IAAI,GAAG,KAAK,cAAc;YACxD,GAAG,CAAC,QAAQ,GAAG,aAAa,CAAC;aAC1B,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,IAAI;YAAE,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC;aACpD,IAAI,GAAG,KAAK,WAAW;YAAE,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;aAC3C,IAAI,GAAG,KAAK,QAAQ;YAAE,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;aAC3C,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;YAC5C,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC;YACnB,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC;QAC3B,CAAC;aAAM,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YAC/B,GAAG,CAAC,KAAK,GAAG,SAAS,CAAC;YACtB,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC;QAC3B,CAAC;aAAM,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,oEAAoE;YACpE,sDAAsD;QACxD,CAAC;aAAM,IAAI,GAAG,KAAK,YAAY;YAAE,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC;aACrD,IAAI,GAAG,KAAK,qBAAqB,IAAI,GAAG,KAAK,UAAU;YAC1D,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC;aACb,IAAI,GAAG,KAAK,cAAc,IAAI,GAAG,KAAK,gBAAgB;YACzD,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;aACjB,IAAI,GAAG,KAAK,sBAAsB,IAAI,GAAG,KAAK,uBAAuB;YACxE,GAAG,CAAC,gBAAgB,GAAG,IAAI,CAAC;aACzB,IAAI,GAAG,KAAK,uBAAuB;YAAE,GAAG,CAAC,kBAAkB,GAAG,IAAI,CAAC;aACnE,IAAI,GAAG,KAAK,0BAA0B;YAAE,GAAG,CAAC,kBAAkB,GAAG,KAAK,CAAC;aACvE,IAAI,GAAG,KAAK,SAAS;YAAE,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;aACxC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,EAAE,CAAC,CAAC;aACnE,IAAI,CAAC,GAAG,CAAC,MAAM;YAAE,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;;YAClC,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,GAAG,CAAC,KAAK,KAAK,MAAM,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,KAAK,aAAa,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,eAAe,CACtB,MAAc,EACd,cAAyB;IAEzB,MAAM,WAAW,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;IACtD,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,OAAO,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC,MAAM,CAClD,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,cAAc,IAAI,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAC3D,CAAC;QACF,OAAO;YACL,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE;YACvB,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,WAAW;YACzC,MAAM,EAAE;gBACN,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,IAAI,EAAE,aAAa,OAAO,CAAC,QAAQ,CAAC,EAAE,GAAG;gBACzC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;aACnB;YACD,UAAU;YACV,WAAW,EAAE,yBAAyB,CAAC,WAAW,CAAC;gBACjD,CAAC,CAAC,WAAW;gBACb,CAAC,CAAC,SAAS;YACb,uBAAuB,CAAC,MAAM;gBAC5B,MAAM,OAAO,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;gBAClD,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC5C,IAAI,cAAc,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;wBACjE,SAAS;oBACX,CAAC;oBACD,gBAAgB,CACd,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,EAC7C,MAAM,CACP,CAAC;gBACJ,CAAC;gBACD,OAAO,MAAM,CAAC;YAChB,CAAC;SACF,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,YAAY,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE;QACtD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,6BAA6B,CAAC;QACpD,CAAC,CAAC,QAAQ,CAAC;IACb,MAAM,MAAM,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;IAClD,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE;QACtB,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW;QACxC,MAAM;QACN,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;aAC/B,MAAM,CACL,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,UAAU,KAAK,UAAU,IAAI,KAAK,CAAC,UAAU,KAAK,MAAM,CACjE;aACA,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9D,WAAW,EAAE,yBAAyB,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxD,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;YACpB,CAAC,CAAC,SAAS;QACb,uBAAuB,CAAC,MAAM;YAC5B,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACjD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAC7B,MAAM,CAAC,MAAM,EACb,UAAU,EACV,eAAe,CAChB,CAAC;YACF,OAAO,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;QACtE,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAC7B,OAAmC;IAEnC,MAAM,MAAM,GAAG,IAAI,GAAG,EAA4B,CAAC;IACnD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,KAAK,OAAO;YAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,MAAM,KAAK,aAAa,IAAI,MAAM,KAAK,iBAAiB,EAAE,CAAC;YAC7D,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC5B,CAAC;QACD,IAAI,MAAM,KAAK,IAAI;YAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa;IAC7B,IAAI,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxD,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;AAC7C,CAAC;AAED,SAAS,aAAa,CAAC,GAAW,EAAE,IAAc;IAChD,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAmC;IAC9D,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC;QACnE,OAAO,KAAK,CAAC;IACf,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5C,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,6BAA6B,CACpC,MAA0B,EAC1B,KAAyB;IAEzB,IAAI,CAAC,KAAK;QAAE,OAAO,MAAM,CAAC;IAC1B,IAAI,MAAW,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,CAAC,uBAAuB,EAAE,uBAAuB,CAAC,CAAC,IAAI,CACvE,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,KAAK,MAAM,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CACnE,CAAC;IACF,MAAM,OAAO,GAAG,SAAS;QACvB,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QAC7D,CAAC,CAAC,WAAW,CAAC;IAChB,IAAI,CAAC,OAAO;QAAE,OAAO,MAAM,CAAC;IAC5B,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,OAAO,EAAE,CAAC;IACzC,OAAO;QACL,GAAG,MAAM;QACT,MAAM,EAAE;YACN,GAAG,MAAM,CAAC,MAAM;YAChB,QAAQ,EAAE;gBACR,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ;gBACzB,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,uBAAuB,EAAE,EAAE;aAC5D;SACF;KACF,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,MAAwB,EACxB,MAAc,EACd,OAAO,GAAmC,EAAE;IAE5C,MAAM,OAAO,GACX,MAAM,CAAC,OAAO;QACd,sBAAsB,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3E,MAAM,IAAI,GAAG;QACX,2BAA2B;QAC3B,QAAQ;QACR,KAAK;QACL,MAAM;QACN,UAAU;QACV,mBAAmB,CAAC,OAAO,CAAC;QAC5B,SAAS;QACT,MAAM,CAAC,KAAK;KACb,CAAC;IACF,MAAM,iBAAiB,GAAG,yBAAyB,CACjD,MAAM,EACN,MAAM,CAAC,eAAe,CACvB,CAAC;IACF,MAAM,mBAAmB,GACvB,iBAAiB,IAAI,yBAAyB,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC5E,IAAI,mBAAmB,IAAI,MAAM,CAAC,QAAQ;QACxC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,MAAM,CAAC,MAAM;QAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACzD,IAAI,MAAM,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,GAAG;QAAE,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACzE,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,GAAG;QAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAChE,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC/C,IAAI,MAAM,CAAC,gBAAgB;QAAE,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAC/D,IAAI,MAAM,CAAC,kBAAkB,KAAK,IAAI;QAAE,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAC3E,IAAI,MAAM,CAAC,kBAAkB,KAAK,KAAK;QACrC,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACxC,IAAI,MAAM,CAAC,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC;QAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3D,OAAO,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,GAAW,EACX,IAAc,EACd,OAAO,GAAsB,EAAE;IAE/B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC;QAChD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC;QAC1C,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE;YAC7B,KAAK,EAAE,YAAY,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;YACvE,KAAK,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO;YACnC,GAAG,EAAE,OAAO,CAAC,GAAG;SACjB,CAAC,CAAC;QACH,IAAI,YAAY,EAAE,CAAC;YACjB,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YACjE,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QACnE,CAAC;aAAM,IAAI,MAAM,EAAE,CAAC;YAClB,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CACjC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CACtC,CAAC;YACF,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CACjC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CACtC,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1B,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YAChC,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,uBAAuB,MAAM,GAAG,CAAC,CAAC,CAAC;gBAC1D,OAAO;YACT,CAAC;YACD,IAAI,MAAM,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACzB,KAAK,MAAM,KAAK,IAAI,YAAY;oBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC9D,KAAK,MAAM,KAAK,IAAI,YAAY;oBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAChE,CAAC;YACD,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,SAAS,qBAAqB,CAAC,KAAa;IAC1C,IAAI,MAAW,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,uCAAuC,KAAK,KAAK,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,CAAC,uBAAuB,EAAE,uBAAuB,CAAC,CAAC,IAAI,CACvE,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,KAAK,MAAM,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CACnE,CAAC;IACF,MAAM,MAAM,GAAG,SAAS;QACtB,CAAC,CAAC,GAAG,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,uBAAuB,EAAE;QACjF,CAAC,CAAC,GAAG,MAAM,GAAG,uBAAuB,EAAE,CAAC;IAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACjC,CAAC;AAED,8EAA8E;AAC9E,SAAS,kBAAkB,CACzB,MAA0B,EAC1B,KAAa;IAEb,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IACrD,OAAO;QACL,GAAG,MAAM;QACT,MAAM,EAAE;YACN,GAAG,MAAM,CAAC,MAAM;YAChB,QAAQ,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;SACjE;KACF,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAc;IAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3C,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;QAAE,OAAO,KAAK,CAAC;IACtC,MAAM,cAAc,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAChD,MAAM,YAAY,GAChB,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;QACxB,EAAE;aACC,WAAW,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;aAC/C,IAAI,CACH,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,WAAW,EAAE;YACnB,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAC9D,CAAC;IACN,MAAM,mBAAmB,GAAG,EAAE,CAAC,UAAU,CACvC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,6BAA6B,CAAC,CACnD,CAAC;IACF,OAAO,CAAC,mBAAmB,IAAI,CAAC,cAAc,IAAI,YAAY,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,uBAAuB,CAAC,MAAc;IAC7C,IAAI,4CAA4C,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9D,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5B,OAAO,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,MAAc;IAC5C,OAAO,oBAAoB,CAAC,MAAM,CAAC,IAAI,uBAAuB,CAAC,MAAM,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,4BAA4B,CACnC,MAAwB,EACxB,MAAc,EACd,OAAmC,EACnC,OAA2B;IAE3B,MAAM,IAAI,GAAG;QACX,OAAO;QACP,6BAA6B;QAC7B,KAAK;QACL,SAAS;QACT,QAAQ;QACR,MAAM;QACN,UAAU;QACV,mBAAmB,CAAC,OAAO,CAAC;QAC5B,SAAS;QACT,MAAM,CAAC,KAAK;KACb,CAAC;IACF,IAAI,OAAO;QAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACzC,IAAI,MAAM,CAAC,gBAAgB;QAAE,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAC/D,IAAI,MAAM,CAAC,KAAK;QAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,iBAAiB,GAAG,yBAAyB,CACjD,MAAM,EACN,MAAM,CAAC,eAAe,CACvB,CAAC;IACF,IAAI,iBAAiB,IAAI,MAAM,CAAC,QAAQ;QACtC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,iBAAiB,IAAI,MAAM,CAAC,MAAM;QAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9E,IAAI,CAAC,MAAM,CAAC,GAAG;QAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvC,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC/C,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,eAAe,IAAI,EAAE,EAAE,CAAC;QACjD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,MAAM,CAAC,kBAAkB,KAAK,IAAI;QAAE,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAC3E,IAAI,MAAM,CAAC,kBAAkB,KAAK,KAAK;QACrC,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACxC,IAAI,MAAM,CAAC,GAAG;QAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,MAAM,CAAC,MAAM;QAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,MAAwB,EACxB,OAAyB;IAEzB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAO,CAAC;IAC9B,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CACb,mFAAmF,CACpF,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,6BAA6B,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;QAC5E,MAAM,IAAI,KAAK,CACb,2DAA2D,CAC5D,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,sBAAsB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACxE,MAAM,YAAY,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,kBAAkB,GAAG,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC;IACxD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb,sJAAsJ,CACvJ,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,4BAA4B,CACvC,MAAM,EACN,MAAM,EACN,YAAY,EACZ,OAAO,CAAC,OAAO,CAChB,CAAC;IACF,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,IAAI,UAAU,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE;YACjE,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;QACH,IAAI,IAAI,KAAK,CAAC;YACZ,MAAM,IAAI,KAAK,CACb,mDAAmD,IAAI,GAAG,CAC3D,CAAC;IACN,CAAC;IACD,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,8BAA8B,EAAE;QACvD,MAAM,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM;QACzE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;QAC1B,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;KAC/B,CAAC,CAAC;IACH,OAAO;QACL,EAAE,EAAE,MAAM;QACV,WAAW,EAAE,kBAAkB,CAAC,MAAM;YACpC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC/B,CAAC,CAAC,MAAM;QACV,UAAU,EAAE,kBAAkB;QAC9B,YAAY;QACZ,MAAM,EAAE,EAAE;QACV,UAAU,EAAE,EAAE;QACd,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,QAAQ,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACtC,KAAK,EAAE,IAAI;KACZ,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,wBAAwB,CAAC,OAAyB;IACzD,IAAI,OAAO,CAAC,aAAa;QAAE,OAAO,OAAO,CAAC,aAAa,EAAE,CAAC;IAC1D,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,KAAK,GAAG;QAAE,OAAO,KAAK,CAAC;IAC7D,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;AACzD,CAAC;AAED,SAAS,0BAA0B,CAAC,OAAe;IACjD,OAAO,OAAO;SACX,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SAC7D,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,SAAS,qBAAqB,CAC5B,KAAsC;IAEtC,OAAO,CAAC,OAAO,EAAE,EAAE;QACjB,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,0BAA0B,CAAC,OAAO,CAAC,EAAE;YACrD,MAAM,EAAE,KAAK,CAAC,KAAK;YACnB,eAAe,EAAE,KAAK,CAAC,KAAK;YAC5B,OAAO,EAAE,CAAC;SACX,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,OAAyB,EACzB,OAAe,EACf,IAA0B;IAE1B,MAAM,OAAO,GAAG,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC;IACjD,IAAI,CAAC,OAAO;QAAE,OAAO,MAAM,IAAI,EAAE,CAAC;IAClC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACvB,IAAI,CAAC;QACH,OAAO,MAAM,IAAI,EAAE,CAAC;IACtB,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;AACH,CAAC;AAED,4FAA4F;AAC5F,SAAS,iBAAiB,CACxB,SAAiB,EACjB,OAAmB,EACnB,KAAa;IAEb,MAAM,IAAI,GAAG;QACX,2BAA2B;QAC3B,SAAS;QACT,SAAS;QACT,UAAU;QACV,mBAAmB,CAAC,OAAO,CAAC;QAC5B,SAAS;QACT,KAAK;KACN,CAAC;IACF,OAAO,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,kBAAkB,CAC/B,aAAiC,EACjC,OAAmB,EACnB,MAAwB,EACxB,OAAyB;IAEzB,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC;IAC3D,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,IAAI,OAAO,CAAC;IACrE,MAAM,cAAc,GAAG,iBAAiB,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAE3E,6EAA6E;IAC7E,gBAAgB;IAChB,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACxB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC;IAClD,CAAC;IAED,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,EAAE,CACX,kEAAkE,cAAc,EAAE,CACnF,CAAC;QACF,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;IAC9C,CAAC;IAED,MAAM,WAAW,GAAG,kBAAkB,aAAa,CAAC,WAAW,GAAG,CAAC;IACnE,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC;IACrD,MAAM,OAAO,GAAG,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC;IACjD,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,IAAI,CAAC,aAAa;YAAE,OAAO;QAC3B,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,aAAa,GAAG,KAAK,CAAC;IACxB,CAAC,CAAC;IACF,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAC5B,IAAI,gBAAgB;YAAE,OAAO;QAC7B,UAAU,EAAE,CAAC,WAAW,CAAC,CAAC;QAC1B,gBAAgB,GAAG,IAAI,CAAC;IAC1B,CAAC,CAAC;IACF,MAAM,eAAe,GAAG,CAAC,OAAe,EAAE,EAAE;QAC1C,YAAY,EAAE,CAAC;QACf,gBAAgB,EAAE,CAAC;QACnB,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC,CAAC;IACF,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC3B,aAAa,GAAG,IAAI,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,gBAAgB,EAAE,CAAC;IACrB,CAAC;IACD,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,4BAA4B,CAAC,CAAC;IACvD,IAAI,CAAC;QACH,MAAM,WAAW,GAAG;YAClB,SAAS;YACT,UAAU;YACV,mBAAmB,CAAC,OAAO,CAAC;YAC5B,SAAS;YACT,MAAM,CAAC,KAAK;SACb,CAAC;QACF,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,MAAM,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,MAAM,UAAU,CAAC,WAAW,EAAE;gBAC5B,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,MAAM,EAAE,eAAe;gBACvB,MAAM,EAAE,eAAe;gBACvB,sBAAsB,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,CAC/C,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC;aACvD,CAAC,CAAC;QACL,CAAC;QACD,YAAY,EAAE,CAAC;QACf,gBAAgB,EAAE,CAAC;QACnB,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,8BAA8B,CAAC,CAAC;QACzD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC;IACjD,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,YAAY,EAAE,CAAC;QACf,gBAAgB,EAAE,CAAC;QACnB,0EAA0E;QAC1E,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,2BAA2B,EAAE;YACpD,KAAK,EAAE,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC;SACnC,CAAC,CAAC;QACH,UAAU,EAAE,CACV,kDAAkD,GAAG,EAAE,OAAO,IAAI,GAAG,KAAK;YACxE,sBAAsB,cAAc,EAAE,CACzC,CAAC;QACF,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;IAC9C,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAwB,EACxB,OAAO,GAAqB,EAAE;IAE9B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,QAAQ,CAAC;IACzC,MAAM,eAAe,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAC1D,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,iBAAiB,CACtB;YACE,GAAG,MAAM;YACT,MAAM,EAAE,OAAO,CAAC,iBAAiB,IAAI,4BAA4B;YACjE,eAAe,EAAE,eAAe;SACjC,EACD,OAAO,CACR,CAAC;IACJ,CAAC;IACD,MAAM,WAAW,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;IACtD,4EAA4E;IAC5E,8EAA8E;IAC9E,6EAA6E;IAC7E,MAAM,cAAc,GAAG,WAAW;QAChC,CAAC,CAAC,qBAAqB,CAAC,MAAM,CAAC;QAC/B,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,aAAa,GACjB,WAAW,KAAK,cAAc;QAC9B,CAAC,CAAC,cAAc,IAAI,cAAc,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;IAC/D,IAAI,CAAC,WAAW,IAAI,sBAAsB,CAAC,MAAM,CAAC,EAAE,CAAC;QACnD,OAAO,iBAAiB,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,CAAC,WAAW,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,KAAK,CACb,mCAAmC,MAAM,oDAAoD,CAC9F,CAAC;IACJ,CAAC;IACD,MAAM,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3E,MAAM,uBAAuB,GAAG,6BAA6B,CAAC,YAAY,CAAC,CAAC;IAC5E,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACjD,IAAI,uBAAuB,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CACb,8EAA8E,CAC/E,CAAC;IACJ,CAAC;IACD,IAAI,uBAAuB,CAAC,YAAY,CAAC,EAAE,CAAC;QAC1C,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CACb,+EAA+E,CAChF,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CACb,oEAAoE,CACrE,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CACb,qEAAqE,CACtE,CAAC;QACJ,CAAC;QACD,MAAM,OAAO,GAAG,CACd,MAAM,CAAC,OAAO,IAAI,sBAAsB,CAAC,MAAM,CAAC,MAAM,CAAC,CACxD,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QACxB,MAAM,YAAY,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,gBAAgB,GACpB,MAAM,CAAC,gBAAgB,IAAI,WAAW,KAAK,cAAc;gBACvD,CAAC,CAAC,gCAAgC,EAAE;gBACpC,CAAC,CAAC,SAAS,CAAC;YAChB,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,8BAA8B,EAAE;gBACvD,MAAM,EAAE,YAAY,CAAC,SAAS;gBAC9B,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;gBAC1B,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,MAAM,EAAE,IAAI;aACb,CAAC,CAAC;YACH,OAAO;gBACL,EAAE,EAAE,YAAY,CAAC,QAAQ,CAAC,EAAE;gBAC5B,WAAW,EAAE,YAAY,CAAC,QAAQ,CAAC,WAAW;gBAC9C,UAAU,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC;gBACpC,YAAY;gBACZ,MAAM,EAAE,EAAE;gBACV,UAAU,EAAE,EAAE;gBACd,MAAM,EAAE,IAAI;gBACZ,KAAK,EAAE,IAAI;gBACX,QAAQ,EAAE,CAAC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAChD,gBAAgB;aACjB,CAAC;QACJ,CAAC;QACD,MAAM,YAAY,GAAG,uBAAuB,CAAC;YAC3C,OAAO;YACP,OAAO;YACP,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB,CAAC,CAAC;QACH,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,8BAA8B,EAAE;YACvD,MAAM,EAAE,YAAY,CAAC,SAAS;YAC9B,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;YAC1B,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM,EAAE,KAAK;SACd,CAAC,CAAC;QACH,OAAO;YACL,EAAE,EAAE,YAAY,CAAC,QAAQ,CAAC,EAAE;YAC5B,WAAW,EAAE,YAAY,CAAC,QAAQ,CAAC,WAAW;YAC9C,iBAAiB,EAAE,YAAY,CAAC,UAAU;YAC1C,UAAU,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC;YACpC,YAAY;YACZ,MAAM,EAAE,EAAE;YACV,UAAU,EAAE,EAAE;YACd,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,YAAY,CAAC,UAAU;YACnC,OAAO,EAAE,YAAY,CAAC,OAAO;YAC7B,QAAQ,EAAE,YAAY,CAAC,QAAQ;SAChC,CAAC;IACJ,CAAC;IACD,IAAI,aAAa,GAAG,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC5D,MAAM,iBAAiB,GAAG,aAAa,CAAC,WAAW,CAAC;IACpD,MAAM,QAAQ,GAAG,iBAAiB;QAChC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ;YAChB,CAAC,MAAM,CAAC,MAAM;gBACZ,CAAC,CAAC,aAAa;gBACf,CAAC,CAAC,iBAAiB,KAAK,cAAc;oBACpC,CAAC,CAAC,QAAQ;oBACV,CAAC,CAAC,SAAS,CAAC,CAAC;QACnB,CAAC,CAAC,SAAS,CAAC;IACd,IAAI,MAAM,CAAC,QAAQ,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CACb,+EAA+E,CAChF,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,KAAK,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IACD,IAAI,QAAQ,KAAK,aAAa,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IACD,MAAM,iBAAiB,GACrB,MAAM,CAAC,GAAG,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IACrE,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,aAAa,GAAG,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACnE,CAAC;IACD,MAAM,OAAO,GACX,MAAM,CAAC,OAAO,IAAI,sBAAsB,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC7E,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACjD,IAAI,iBAAiB,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CACb,yJAAyJ,CAC1J,CAAC;IACJ,CAAC;IACD,aAAa,GAAG,6BAA6B,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5E,MAAM,YAAY,GAAG,uBAAuB;QAC1C,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACpC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,IAAI,CAAC;YACH,MAAM,iBAAiB,GAAG,oCAAoC,CAC5D,iBAAiB,EACjB,QAAQ,CACT;gBACC,CAAC,CAAC,6BAA6B,CAAC,OAAO,CAAC;gBACxC,CAAC,CAAC,SAAS,CAAC;YACd,MAAM,gBAAgB,GACpB,MAAM,CAAC,gBAAgB,IAAI,aAAa;gBACtC,CAAC,CAAC,gCAAgC,EAAE;gBACpC,CAAC,CAAC,SAAS,CAAC;YAChB,MAAM,4BAA4B,GAChC,aAAa,IAAI,CAAC,MAAM,CAAC,gBAAgB;gBACvC,CAAC,CAAC,2BAA2B,EAAE;gBAC/B,CAAC,CAAC,SAAS,CAAC;YAChB,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,8BAA8B,EAAE;gBACvD,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;gBAC1C,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;gBAC1B,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,MAAM,EAAE,IAAI;aACb,CAAC,CAAC;YACH,OAAO;gBACL,EAAE,EAAE,aAAa,CAAC,EAAE;gBACpB,WAAW,EAAE,aAAa,CAAC,WAAW;gBACtC,UAAU,EAAE,aAAa,CAAC,UAAU;gBACpC,YAAY;gBACZ,MAAM,EAAE,uBAAuB;oBAC7B,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,sBAAsB,CAAC,iBAAiB,EAAE,QAAQ,CAAC;wBACnD,CAAC,CAAC,EAAE;wBACJ,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM;gBACjD,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;gBAC/C,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE;oBACR,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,iBAAiB,EAAE,CAAC;oBAC3D,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC7D;gBACD,gBAAgB;gBAChB,4BAA4B;gBAC5B,QAAQ;gBACR,iBAAiB;aAClB,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACzE,IAAI,iBAAqC,CAAC;IAC1C,IAAI,mBAAyC,CAAC;IAC9C,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,cAAkC,CAAC;IACvC,IAAI,oBAAoB,GAAe,iBAAiB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3E,IAAI,iBAAqC,CAAC;IAE1C,IAAI,CAAC;QACH,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACxB,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC9B,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBACvB,MAAM,IAAI,KAAK,CACb,2LAA2L,CAC5L,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,IAAI,WAAW,EAAE,CAAC;gBACvB,uEAAuE;gBACvE,uEAAuE;gBACvE,qEAAqE;gBACrE,4DAA4D;gBAC5D,mBAAmB,GAAG,0BAA0B,CAAC;oBAC/C,UAAU,EAAE,WAAW;oBACvB,cAAc;oBACd,YAAY;oBACZ,KAAK,EAAE,MAAM,CAAC,KAA2B;oBACzC,OAAO;oBACP,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,QAAQ;oBACR,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM;iBACpD,CAAC,CAAC;gBACH,iBAAiB,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;gBAC3C,QAAQ,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC;YACrE,CAAC;iBAAM,CAAC;gBACN,wEAAwE;gBACxE,mEAAmE;gBACnE,4BAA4B;gBAC5B,iBAAiB,GAAG,aAAa,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;gBACnE,MAAM,IAAI,GAAG;oBACX,OAAO;oBACP,6BAA6B;oBAC7B,KAAK;oBACL,SAAS;oBACT,iBAAiB;oBACjB,QAAQ;oBACR,GAAG,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;oBAClE,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;oBACjD,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC1C,GAAG,CAAC,iBAAiB,IAAI,MAAM,CAAC,QAAQ;wBACtC,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;wBAC7B,CAAC,CAAC,EAAE,CAAC;oBACP,GAAG,CAAC,iBAAiB,IAAI,MAAM,CAAC,MAAM;wBACpC,CAAC,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC;wBAC9B,CAAC,CAAC,EAAE,CAAC;oBACP,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC7C,CAAC;gBACF,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;gBAC1C,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;oBACnB,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,IAAI,UAAU,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE;wBACjE,KAAK,EAAE,QAAQ;qBAChB,CAAC,CAAC;oBACH,IAAI,IAAI,KAAK,CAAC;wBACZ,MAAM,IAAI,KAAK,CACb,mDAAmD,IAAI,GAAG,CAC3D,CAAC;gBACN,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,oCAAoC,CAAC,iBAAiB,EAAE,QAAQ,CAAC,EAAE,CAAC;YACtE,iBAAiB,GAAG,8BAA8B,CAAC,OAAO,CAAC,CAAC;YAC5D,QAAQ,CAAC,IAAI,CAAC,SAAS,iBAAiB,EAAE,CAAC,CAAC;QAC9C,CAAC;QAED,0EAA0E;QAC1E,2EAA2E;QAC3E,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,8BAA8B,EAAE;YACvD,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;YAC1C,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;YAC1B,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;SAC/B,CAAC,CAAC;QAEH,IAAI,iBAAiB,IAAI,uBAAuB,EAAE,CAAC;YACjD,MAAM,eAAe,GAAG,2BAA2B,EAAE,CAAC;YACtD,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CACb,kGAAkG,CACnG,CAAC;YACJ,CAAC;YACD,oBAAoB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC/C,QAAQ,CAAC,IAAI,CACX,oEAAoE,MAAM,YAAY,MAAM,CAAC,KAAK,EAAE,CACrG,CAAC;gBACF,4BAA4B,CAC1B,MAAM,EACN,eAAe,EACf,OAAO,EACP,MAAM,CAAC,KAAK,CACb,CAAC;gBACF,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,2BAA2B,EAAE;gBACpD,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;aAC3C,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,iBAAiB,EAAE,CAAC;YAC7B,QAAQ,CAAC,IAAI,CACX,6DAA6D,aAAa,CAAC,MAAM,CAAC,IAAI,aAAa,MAAM,CAAC,MAAM,YAAY,MAAM,CAAC,KAAK,QAAQ,CACjJ,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnB,MAAM,YAAY,GAAG,MAAM,cAAc,CAAC,aAAa,CAAC,MAAM,EAAE;oBAC9D,OAAO,EAAE,UAAU;oBACnB,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC;oBACvC,OAAO,EAAE,IAAI;oBACb,GAAG,EAAE,OAAO,CAAC,GAAG;iBACjB,CAAC,CAAC;gBACH,oBAAoB,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAC7C,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAC5B,CAAC;gBACF,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,2BAA2B,EAAE;oBACpD,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;iBAC3C,CAAC,CAAC;gBAEH,kEAAkE;gBAClE,wEAAwE;gBACxE,oEAAoE;gBACpE,iEAAiE;gBACjE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,MAAM,MAAM,GAAG,MAAM,kBAAkB,CACrC,aAAa,EACb,UAAU,EACV,MAAM,EACN,OAAO,CACR,CAAC;oBACF,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;oBAC7B,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,SAAS,CAAC;oBACpD,IAAI,SAAS;wBAAE,oBAAoB,GAAG,UAAU,CAAC;oBACjD,IAAI,cAAc;wBAAE,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBACpD,CAAC;qBAAM,CAAC;oBACN,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CACtC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,MAAM,CAAC,CACnD,CAAC;oBACF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC9B,cAAc,GAAG,iBAAiB,CAChC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EACxC,cAAc,EACd,MAAM,CAAC,KAAK,CACb,CAAC;wBACF,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;oBAChC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,0EAA0E;QAC1E,yEAAyE;QACzE,IAAI,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACxD,IAAI,gBAAoC,CAAC;QACzC,IAAI,mBAAwC,CAAC;QAC7C,IAAI,4BAAgD,CAAC;QACrD,IACE,aAAa;YACb,CAAC,gBAAgB;YACjB,CAAC,EAAE,CAAC,UAAU,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC,EAClD,CAAC;YACD,uEAAuE;YACvE,kEAAkE;YAClE,gEAAgE;YAChE,IAAI,CAAC,MAAM,CAAC,oBAAoB,IAAI,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;gBAClE,MAAM,MAAM,GAAG,OAAO,CAAC,kBAAkB,IAAI,qBAAqB,CAAC;gBACnE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC;oBAC1B,YAAY,EAAE,gCAAgC,EAAE;oBAChD,YAAY,EAAE,yBAAyB,EAAE;oBACzC,OAAO,EAAE,wBAAwB;iBAClC,CAAC,CAAC;gBACH,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;oBACpB,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,sBAAsB,EAAE;wBAC/C,IAAI,EAAE,eAAe;qBACtB,CAAC,CAAC;gBACL,CAAC;gBACD,gBAAgB,GAAG,MAAM,KAAK,IAAI,CAAC;YACrC,CAAC;YACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,4BAA4B,GAAG,2BAA2B,EAAE,CAAC;YAC/D,CAAC;QACH,CAAC;QAED,IAAI,gBAAgB,EAAE,CAAC;YACrB,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,OAAO,CAAC,GAAG,EAAE,CACX,qFAAqF,CACtF,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,WAAW,GAAG,0BAA0B,CAAC,OAAO,EAAE;oBACtD,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;iBAC7B,CAAC,CAAC;gBACH,IAAI,WAAW,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBACrC,MAAM,IAAI,KAAK,CAAC,mBAAmB,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC5D,CAAC;gBACD,gBAAgB,GAAG,WAAW,CAAC,IAAI,CAAC;gBACpC,mBAAmB;oBACjB,WAAW,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;gBACjE,QAAQ,CAAC,IAAI,CAAC,SAAS,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC3C,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,gCAAgC,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;QAED,OAAO;YACL,EAAE,EAAE,aAAa,CAAC,EAAE;YACpB,WAAW,EAAE,aAAa,CAAC,WAAW;YACtC,iBAAiB;YACjB,UAAU,EAAE,aAAa,CAAC,UAAU;YACpC,YAAY;YACZ,MAAM,EAAE,uBAAuB;gBAC7B,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,sBAAsB,CAAC,iBAAiB,EAAE,QAAQ,CAAC;oBACnD,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM;YACjD,UAAU,EAAE,oBAAoB;YAChC,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,QAAQ;YACR,OAAO,EAAE,mBAAmB;YAC5B,SAAS;YACT,cAAc;YACd,QAAQ;YACR,iBAAiB;YACjB,gBAAgB;YAChB,mBAAmB;YACnB,4BAA4B;SAC7B,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,OAAO,GAAqB,EAAE;IAChD,MAAM,MAAM,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAClD,OAAO;QACL,GAAG,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC;aAClC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;aAC/C,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACf,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE;YACrB,OAAO,EACL,kCAAkC,CAChC,KAAK,CAAC,QAAQ,CAAC,EAAuB,CACvC,IAAI,EAAE;YACT,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,WAAW;YAChC,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,WAAW;YACvC,MAAM,EACJ,uBAAuB,CAAC,KAAK,CAAC,IAAI,6BAA6B,CAAC,KAAK,CAAC;gBACpE,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM;YAClC,KAAK,EACH,uBAAuB,CAAC,KAAK,CAAC;gBAC9B,6BAA6B,CAAC,KAAK,CAAC;YACtC,MAAM,EAAE,cAAc;SACvB,CAAC,CAAC;QACL,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC7C,EAAE,EAAE,KAAK,CAAC,IAAI;YACd,OAAO,EAAE,EAAc;YACvB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,WAAW,EACT,KAAK,CAAC,WAAW,IAAI,iDAAiD;YACxE,MAAM,EAAE,EAAE;YACV,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,OAAO,CAAC,iBAAiB,IAAI,4BAA4B;SAClE,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,KAAwB;IAC9C,OAAO;QACL,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO;QAC3C,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ;KACzB,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAwB;IAChD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;IACnD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;IACvD,MAAM,MAAM,GACV,KAAK,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,OAAO;QACnC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,OAAO,KAAK,CAAC,UAAU,GAAG;QACpD,CAAC,CAAC,EAAE,CAAC;IACT,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,OAAO,GAAG,MAAM,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;AACjI,CAAC;AAED,SAAS,iBAAiB,CAAC,KAA4B;IACrD,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO;QAC3C,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,KAA4B;IACvD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;IACnD,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,IAAI,aAAa,KAAK,CAAC,UAAU,eAAe,KAAK,CAAC,IAAI,EAAE,CAAC;AACpI,CAAC;AAED,SAAS,eAAe,CAAC,IAAqB;IAC5C,IAAI,IAAI,KAAK,aAAa;QACxB,OAAO,2CAA2C,CAAC;IACrD,IAAI,IAAI,KAAK,aAAa;QAAE,OAAO,wBAAwB,CAAC;IAC5D,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,0BAA0B,CAAC,KAAa;IAC/C,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,+BAA+B,CAAC,KAAK,CAAC;IACpE,IAAI,KAAK,KAAK,aAAa;QACzB,OAAO,+BAA+B,CAAC,aAAa,CAAC,CAAC;IACxD,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,+BAA+B,CAAC,EAAE,CAAC;IAC9D,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,iBAAiB,CACxB,MAAc,EACd,MAAkD;IAElD,IAAI,CAAC,MAAM,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IAC9B,IAAI,yBAAyB,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IACpD,MAAM,WAAW,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;IACtD,IAAI,sBAAsB,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IACvE,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CACxB,OAAiB,EACjB,MAAwB;IAExB,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,0BAA0B,CAAC,SAAiB;IACnD,IAAI,SAAS,KAAK,aAAa,EAAE,CAAC;QAChC,OAAO,mFAAmF,CAAC;IAC7F,CAAC;IACD,IAAI,SAAS,KAAK,iBAAiB,EAAE,CAAC;QACpC,OAAO,wEAAwE,CAAC;IAClF,CAAC;IACD,IAAI,SAAS,KAAK,oBAAoB,EAAE,CAAC;QACvC,OAAO,0GAA0G,CAAC;IACpH,CAAC;IACD,IAAI,SAAS,KAAK,oBAAoB,EAAE,CAAC;QACvC,OAAO,wGAAwG,CAAC;IAClH,CAAC;IACD,IAAI,SAAS,KAAK,aAAa,EAAE,CAAC;QAChC,OAAO,sGAAsG,CAAC;IAChH,CAAC;IACD,IAAI,SAAS,KAAK,cAAc,EAAE,CAAC;QACjC,OAAO,2GAA2G,CAAC;IACrH,CAAC;IACD,IAAI,SAAS,KAAK,gBAAgB,EAAE,CAAC;QACnC,OAAO,yHAAyH,CAAC;IACnI,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,2CAA2C,CAClD,OAAiB,EACjB,MAAwB;IAExB,MAAM,KAAK,GAAG,IAAI,GAAG,CAAS,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC;IAC5D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,KAAK,MAAM,IAAI,IAAI,yBAAyB,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YAC3D,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;AACpB,CAAC;AAED,SAAS,0BAA0B,CAAC,UAAoB;IACtD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,uBAAuB,CAC9B,MAAwB,EACxB,OAAyB,EACzB,MAAe;IAEf,MAAM,WAAW,GAAG,yBAAyB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/D,MAAM,cAAc,GAAG,6BAA6B,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtE,MAAM,YAAY,GAAG,MAAM;QACzB,CAAC,CAAC,wBAAwB,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC;QACtD,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,eAAe,GAAG,MAAM;QAC5B,CAAC,CAAC,4BAA4B,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC;QAC7D,CAAC,CAAC,EAAE,CAAC;IACP,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3D,wBAAwB,CAAC,eAAe,CAAC,CAAC;IAC5C,CAAC;IACD,MAAM,UAAU,GACd,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM;QACtB,CAAC,CAAC,yBAAyB,CAAC,MAAM,EAAE,OAAO,CAAC;QAC5C,CAAC,CAAC,WAAW,CAAC;IAClB,MAAM,aAAa,GACjB,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM;QACtB,CAAC,CAAC,6BAA6B,CAAC,MAAM,EAAE,OAAO,CAAC;QAChD,CAAC,CAAC,cAAc,CAAC;IACrB,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;IAC/D,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;IAElE,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,MAAM,iBAAiB,GACrB,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC;QACtD,MAAM,oBAAoB,GACxB,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC;QAC5D,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,IAAI,CAAC,SAAS,CACf;YACE,EAAE,EAAE,IAAI;YACR,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,WAAW;YAClB,KAAK,EACH,iBAAiB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM;gBAC1D,oBAAoB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM;YAC/D,OAAO,EAAE,YAAY;YACrB,MAAM,EAAE,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC;YAC7C,QAAQ,EAAE,oBAAoB,CAAC,GAAG,CAAC,iBAAiB,CAAC;SACtD,EACD,IAAI,EACJ,CAAC,CACF,IAAI,CACN,CAAC;QACF,OAAO;IACT,CAAC;IAED,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,GAAG,wBAAwB,CAAC,MAAM,CAAC,MAAM,CAAC;YAClD,CAAC,CAAC,iEAAiE;YACnE,CAAC,CAAC,MAAM;gBACN,CAAC,CAAC,mLAAmL,MAAM,CAAC,MAAM,IAAI,aAAa,yBAAyB;gBAC5O,CAAC,CAAC,iDAAiD,MAAM,CAAC,MAAM,IAAI,aAAa,qBAAqB,CAAC;QAC3G,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,+CAA+C,MAAM,MAAM,IAAI,EAAE,CAClE,CAAC;QACF,OAAO;IACT,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,YAAY;gBACV,CAAC,CAAC,gBAAgB,YAAY,gBAAgB,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK;gBAChF,CAAC,CAAC,qDAAqD,CAC1D,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,YAAY;gBACV,CAAC,CAAC,WAAW,YAAY,gBAAgB,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK;gBAC3E,CAAC,CAAC,qDAAqD,CAC1D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG;QACX,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,CACzD,gBAAgB,CACjB;QACD,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,GAAG,CAC/D,mBAAmB,CACpB;KACF,CAAC;IACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/C,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc;IACrB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,oBAAoB,CAAC,EAAE,MAAM,CAAC,CACzC,CAAC;QAC3B,OAAO,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,IAAc,EACd,OAAO,GAAqB,EAAE;IAE9B,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IAClE,CAAC;IACD,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS;QAClC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACnC,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS;QAC1B,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,CAAC,OAAe,EAAE,EAAE;YAClB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;gBAAE,OAAO;YAC5B,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC,CAAC;IACN,MAAM,UAAU,GACd,CAAC,MAAM,CAAC,SAAS,IAAI,WAAW;QAC9B,CAAC,CAAC,qBAAqB,CAAC,WAAW,CAAC;QACpC,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,oBAAoB,GACxB,CAAC,MAAM,CAAC,SAAS,IAAI,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK;QACtD,CAAC,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;QACnD,CAAC,CAAC,SAAS,CAAC;IAEhB,IAAI,MAAM,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;QAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;QAClC,OAAO;IACT,CAAC;IAED,uEAAuE;IACvE,wDAAwD;IACxD,mFAAmF;IACnF,wEAAwE;IACxE,oEAAoE;IACpE,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,0BAA0B,GAAG,GAAG,CAAC;IAE7C,8EAA8E;IAC9E,0EAA0E;IAC1E,8EAA8E;IAC9E,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,SAAS,GACb,OAAO,CAAC,SAAS;QACjB,kBAAkB,CAAC;YACjB,GAAG,EAAE,MAAM;YACX,UAAU,EAAE,cAAc,EAAE;YAC5B,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,WAAW,EAAE,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC;SAC3C,CAAC,CAAC;IACL,MAAM,oBAAoB,GAAqB;QAC7C,GAAG,OAAO;QACV,SAAS;QACT,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,UAAU;QAC5C,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,IAAI,oBAAoB;KAC3E,CAAC;IAEF,IAAI,CAAC;QACH,SAAS,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAEtC,IAAI,MAAM,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,UAAU,CAAC,oBAAoB,CAAC,CAAC;YAChD,SAAS,CAAC,KAAK,CAAC,0BAA0B,EAAE;gBAC1C,cAAc,EAAE,MAAM,CAAC,MAAM;gBAC7B,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;aACrD,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC7D,OAAO;YACT,CAAC;YACD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;gBAC9D,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM;oBAClC,CAAC,CAAC,aAAa,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;oBAC1C,CAAC,CAAC,EAAE,CAAC;gBACP,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;gBAC5D,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,WAAW,GAAG,OAAO,KAAK,MAAM,KAAK,CAChE,CAAC;YACJ,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC/D,uBAAuB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC;YACtE,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;QACxE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,SAAS,CAAC,KAAK,CAAC,sBAAsB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC5D,OAAO;QACT,CAAC;QACD,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3C,SAAS,CAAC,KAAK,CAAC,4BAA4B,EAAE;YAC5C,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;YAC3B,aAAa,EAAE,OAAO,CAAC,MAAM;YAC7B,oEAAoE;YACpE,yEAAyE;YACzE,0EAA0E;YAC1E,WAAW,EAAE,OAAO,CAAC,MAAM,KAAK,kBAAkB,CAAC,OAAO,CAAC,CAAC,MAAM;YAClE,WAAW;SACZ,CAAC,CAAC;QAEH,MAAM,aAAa,GACjB,mBAAmB,CAAC,OAAO,CAAC;YAC5B,sBAAsB,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QACjD,MAAM,yBAAyB,GAC7B,+BAA+B,CAAC,OAAO,CAAC;YACxC,6BAA6B,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QACxD,IAAI,MAAM,CAAC,QAAQ,IAAI,CAAC,yBAAyB,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CACb,+EAA+E,CAChF,CAAC;QACJ,CAAC;QACD,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBACtC,MAAM,CAAC,QAAQ,GAAG,aAAa,CAAC;YAClC,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;gBACtD,MAAM,MAAM,GAAG,OAAO,CAAC,cAAc,IAAI,iBAAiB,CAAC;gBAC3D,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACrD,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,SAAS,CAAC,KAAK,CAAC,sBAAsB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;oBAC/D,OAAO;gBACT,CAAC;gBACD,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;YACzB,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,QAAQ;gBAAE,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;YACjD,IAAI,MAAM,CAAC,QAAQ,KAAK,aAAa,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACxD,IAAI,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;oBAClC,MAAM,MAAM,GAAG,OAAO,CAAC,gBAAgB,IAAI,mBAAmB,CAAC;oBAC/D,MAAM,MAAM,GAAG,MAAM,MAAM,EAAE,CAAC;oBAC9B,IAAI,CAAC,MAAM,EAAE,CAAC;wBACZ,SAAS,CAAC,KAAK,CAAC,sBAAsB,EAAE;4BACtC,IAAI,EAAE,cAAc;yBACrB,CAAC,CAAC;wBACH,OAAO;oBACT,CAAC;oBACD,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;gBACzB,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,KAAK,CACb,sEAAsE,CACvE,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,SAAS,CAAC,KAAK,CAAC,+BAA+B,EAAE;gBAC/C,IAAI,EAAE,MAAM,CAAC,QAAQ;aACtB,CAAC,CAAC;QACL,CAAC;QAED,MAAM,WAAW,GAAG,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG,MAAM,oBAAoB,CACxC,MAAM,EACN,oBAAoB,EACpB,WAAW,CACZ,CAAC;QACF,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,SAAS,CAAC,KAAK,CAAC,sBAAsB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;YAC7D,OAAO;QACT,CAAC;QACD,SAAS,CAAC,KAAK,CAAC,6BAA6B,EAAE;YAC7C,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;YAC1B,WAAW,EAAE,OAAO,CAAC,MAAM;SAC5B,CAAC,CAAC;QAEH,wEAAwE;QACxE,8CAA8C;QAC9C,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;YAC3D,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,cAAc,CAAC;YAC1D,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC;YAC7D,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,SAAS,CAAC,KAAK,CAAC,sBAAsB,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC3D,OAAO;YACT,CAAC;YACD,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QACvB,CAAC;QACD,SAAS,CAAC,KAAK,CAAC,2BAA2B,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAEtE,MAAM,qBAAqB,GAAG,2CAA2C,CACvE,OAAO,EACP,MAAM,CACP,CAAC;QACF,IACE,MAAM,CAAC,kBAAkB,KAAK,SAAS;YACvC,0BAA0B,CAAC,qBAAqB,CAAC;YACjD,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,CAAC;YACD,MAAM,MAAM,GACV,OAAO,CAAC,wBAAwB,IAAI,2BAA2B,CAAC;YAClE,MAAM,MAAM,GAAG,MAAM,MAAM,EAAE,CAAC;YAC9B,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,SAAS,CAAC,KAAK,CAAC,sBAAsB,EAAE;oBACtC,IAAI,EAAE,sBAAsB;iBAC7B,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,MAAM,CAAC,kBAAkB,GAAG,MAAM,KAAK,IAAI,CAAC;QAC9C,CAAC;QAED,0EAA0E;QAC1E,4EAA4E;QAC5E,0EAA0E;QAC1E,8EAA8E;QAC9E,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QACtD,MAAM,cAAc,GAClB,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACtB,IAAI,yBAAyB,CAAC,MAAM,CAAC,KAAK,cAAc;gBAAE,OAAO,KAAK,CAAC;YACvE,MAAM,IAAI,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;YAC3C,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAChD,CAAC,CAAC,IAAI,uBAAuB,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QACxD,IACE,cAAc;YACd,CAAC,MAAM,CAAC,gBAAgB;YACxB,CAAC,EAAE,CAAC,UAAU,CAAC,yBAAyB,CAAC,YAAY,CAAC,CAAC;YACvD,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,CAAC;YACD,MAAM,MAAM,GAAG,OAAO,CAAC,kBAAkB,IAAI,qBAAqB,CAAC;YACnE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC;gBAC1B,YAAY,EAAE,gCAAgC,EAAE;gBAChD,YAAY,EAAE,yBAAyB,EAAE;gBACzC,OAAO,EAAE,wBAAwB;aAClC,CAAC,CAAC;YACH,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,SAAS,CAAC,KAAK,CAAC,sBAAsB,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;YACrE,CAAC;YACD,MAAM,CAAC,gBAAgB,GAAG,MAAM,KAAK,IAAI,CAAC;YAC1C,MAAM,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACrC,CAAC;QAED,MAAM,OAAO,GAAsB,EAAE,CAAC;QACtC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,OAAO,CAAC,IAAI,CACV,MAAM,mBAAmB,CACvB;gBACE,GAAG,MAAM;gBACT,MAAM;gBACN,MAAM,EAAE,mBAAmB,CAAC,OAAO,CAAC;gBACpC,OAAO;aACR,EACD;gBACE,GAAG,oBAAoB;gBACvB,GAAG;aACJ,CACF,CACF,CAAC;QACJ,CAAC;QAED,yEAAyE;QACzE,iEAAiE;QACjE,MAAM,eAAe,GAAG;YACtB,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SAC3D,CAAC;QACF,MAAM,gBAAgB,GAAG;YACvB,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SAC3D,CAAC;QACF,SAAS,CAAC,KAAK,CAAC,sBAAsB,EAAE;YACtC,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC;YACjC,OAAO,EAAE,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC;YACnC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;SACnC,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAC5E,CAAC;YACF,OAAO;QACT,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAC/D,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,cAAc,GAAG,OAAO;aAC3B,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC;aACnC,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,MAAM,YAAY,GAAG;YACnB,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;SAC7D,CAAC;QACF,MAAM,UAAU,GAAG;YACjB,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SAC3D,CAAC;QACF,MAAM,OAAO,GAAG;YACd,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SACnE,CAAC;QACF,MAAM,aAAa,GAAG;YACpB,GAAG,IAAI,GAAG,CACR,OAAO;iBACJ,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,UAAU,CAAC;iBACrD,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CACxC;SACF,CAAC;QACF,MAAM,SAAS,GAAG;YAChB,GAAG,IAAI,GAAG,CACR,OAAO;iBACJ,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;iBAChC,MAAM,CAAC,CAAC,IAAI,EAA2B,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAC5D;SACF,CAAC;QACF,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACjE,MAAM,sBAAsB,GAAG;YAC7B,GAAG,IAAI,GAAG,CACR,OAAO;iBACJ,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC;iBACtC,MAAM,CAAC,CAAC,OAAO,EAAqB,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAC5D;SACF,CAAC;QACF,MAAM,QAAQ,GAAG,aAAa;YAC5B,CAAC,CAAC,4BAA4B;YAC9B,CAAC,CAAC,sBAAsB,CAAC,MAAM;gBAC7B,CAAC,CAAC,iCAAiC,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;gBACxE,CAAC,CAAC,EAAE,CAAC;QACT,MAAM,aAAa,GAAG;YACpB,GAAG,IAAI,GAAG,CACR,OAAO;iBACJ,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC;iBACxC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAC1C;SACF,CAAC;QACF,MAAM,gBAAgB,GAAG,aAAa,CAAC,MAAM;YAC3C,CAAC,CAAC,mCAAmC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,yBAAyB,EAAE,oEAAoE,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YAChN,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,uBAAuB,GAAG;YAC9B,GAAG,IAAI,GAAG,CACR,OAAO;iBACJ,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,4BAA4B,CAAC;iBACpD,MAAM,CAAC,CAAC,OAAO,EAAqB,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAC5D;SACF,CAAC;QACF,MAAM,0BAA0B,GAAG,uBAAuB,CAAC,MAAM;YAC/D,CAAC,CAAC,0CAA0C,uBAAuB,CAAC,IAAI,CACpE,MAAM,CACP,oDAAoD;YACvD,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG;YACd,YAAY,CAAC,MAAM;gBACjB,CAAC,CAAC,wBAAwB,YAAY,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACnF,CAAC,CAAC,8BAA8B;YAClC,UAAU,CAAC,MAAM;gBACf,CAAC,CAAC,wBAAwB,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACxF,CAAC,CAAC,mCAAmC;YACvC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,wBAAwB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;YAClE,SAAS,CAAC,MAAM;gBACd,CAAC,CAAC,wBAAwB,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACrE,CAAC,CAAC,EAAE;YACN,aAAa;gBACX,CAAC,CAAC,gCAAgC;gBAClC,CAAC,CAAC,sBAAsB,CAAC,MAAM;oBAC7B,CAAC,CAAC,sCAAsC,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;oBAC7E,CAAC,CAAC,EAAE;YACR,aAAa,CAAC,MAAM;gBAClB,CAAC,CAAC,wBAAwB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACpD,CAAC,CAAC,EAAE;SACP,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAClB,KAAK,CAAC,IAAI,CACR,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAClB,aAAa,cAAc,SAAS,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CACtE,CAAC;QAEF,4EAA4E;QAC5E,4EAA4E;QAC5E,qEAAqE;QACrE,IACE,CAAC,aAAa;YACd,UAAU,CAAC,IAAI,CACb,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,aAAa,IAAI,MAAM,KAAK,iBAAiB,CACrE,EACD,CAAC;YACD,KAAK,CAAC,GAAG,CAAC,IAAI,CACZ,6FAA6F;gBAC3F,CAAC,sBAAsB,CAAC,MAAM;oBAC5B,CAAC,CAAC,sCAAsC;oBACxC,CAAC,CAAC,GAAG,CAAC,CACX,CAAC;QACJ,CAAC;QAED,0EAA0E;QAC1E,KAAK,MAAM,IAAI,IAAI,CAAC,gBAAgB,EAAE,0BAA0B,CAAC,CAAC,MAAM,CACtE,OAAO,CACR,EAAE,CAAC;YACF,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;QAED,MAAM,aAAa,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3E,MAAM,qBAAqB,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAC5D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CACzB,CAAC;QACF,MAAM,UAAU,GAAG,qBAAqB;YACtC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,mFAAmF,CAAC;QACxF,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC;QAC5E,KAAK,CAAC,KAAK,CACT,0BAA0B,aAAa,IAAI,iBAAiB,wBAAwB;YAClF,kDAAkD,YAAY,aAAa;YAC3E,UAAU,CACb,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,SAAS,CAAC,KAAK,CAAC,mBAAmB,EAAE;YACnC,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YAC7D,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;SACnC,CAAC,CAAC;QACH,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE;YAChC,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE;YAC3D,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE;SAC9C,CAAC,CAAC;QACH,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YACjC,OAAO,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,0BAA0B,GAAG,cAAc,CAAC;QAC1D,CAAC;IACH,CAAC;AACH,CAAC","sourcesContent":["/**\n * `agent-native skills` is the friendly install surface for app-backed skills.\n * The lower-level `app-skill` commands remain the packaging primitives; this\n * command handles the common \"install Assets for my agent\" path in one step.\n */\n\nimport { spawn } from \"node:child_process\";\nimport { createHash } from \"node:crypto\";\nimport fs from \"node:fs\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nimport {\n MCP_LEGACY_ROUTE_PREFIX,\n MCP_PUBLIC_ROUTE_PREFIX,\n} from \"../mcp/route-paths.js\";\nimport {\n buildAppSkillPack,\n ensureAppSkill,\n loadAppSkillManifest,\n normalizeAppSkillManifest,\n type AppSkillManifest,\n type LoadedAppSkillManifest,\n} from \"./app-skill.js\";\nimport {\n resolveClients,\n runConnect,\n writeConnectClientPreferences,\n} from \"./connect.js\";\nimport {\n CONTEXT_XRAY_SKILL_MD,\n installLocalContextXray,\n} from \"./context-xray-local.js\";\nimport { CLIENTS, type ClientId } from \"./mcp-config-writers.js\";\nimport {\n installScreenMemoryForClient,\n resolveScreenMemoryStoreDir,\n} from \"./mcp.js\";\nimport { PR_VISUAL_RECAP_SETUP, writePrVisualRecapWorkflow } from \"./recap.js\";\nimport { setupAgentSymlinks } from \"./setup-agents.js\";\nimport {\n ASSETS_SKILL_MD,\n CANVAS_REFERENCE_MD,\n CONNECTION_REFERENCE_MD,\n CONTENT_SKILL_MD,\n DESIGN_EXPLORATION_SKILL_MD,\n DESIGN_VISUAL_EDIT_SKILL_MD,\n DOCUMENT_QUALITY_REFERENCE_MD,\n EXEMPLAR_REFERENCE_MD,\n HELP,\n LOCAL_FILES_REFERENCE_MD,\n REWIND_SKILL_MD,\n VISUAL_PLANS_SKILL_MD,\n VISUAL_RECAP_SKILL_MD,\n VISUALIZE_REPO_SKILL_MD,\n WIREFRAME_REFERENCE_MD,\n} from \"./skills-content/index.js\";\nimport { createCliTelemetry, type CliTelemetry } from \"./telemetry.js\";\n\nexport {\n CANVAS_REFERENCE_MD,\n CONNECTION_REFERENCE_MD,\n DOCUMENT_QUALITY_REFERENCE_MD,\n EXEMPLAR_REFERENCE_MD,\n LOCAL_FILES_REFERENCE_MD,\n VISUAL_PLANS_SKILL_MD,\n VISUAL_RECAP_SKILL_MD,\n VISUALIZE_REPO_SKILL_MD,\n WIREFRAME_REFERENCE_MD,\n};\n\nexport const BUILT_IN_APP_SKILLS = {\n assets: {\n skillName: \"assets\",\n manifest: normalizeAppSkillManifest({\n schemaVersion: 1,\n id: \"assets\",\n displayName: \"Assets\",\n description:\n \"Create, search, select, and export brand image and video assets from the Assets app.\",\n hosted: {\n url: \"https://assets.agent-native.com\",\n mcpUrl: \"https://assets.agent-native.com/mcp\",\n },\n mcp: { serverName: \"agent-native-assets\" },\n auth: {\n mode: \"oauth\",\n setup:\n \"Authenticate with the Assets MCP connector in the host app. No shared secrets are stored in skill files.\",\n },\n surfaces: [\n {\n id: \"asset-picker\",\n action: \"open-asset-picker\",\n path: \"/picker\",\n mediaTypes: [\"image\", \"video\"],\n defaultMediaType: \"image\",\n },\n ],\n skills: [\n {\n path: \"skills/assets\",\n visibility: \"exported\",\n exportAs: \"assets\",\n },\n ],\n hostAdapters: [\n \"codex-plugin\",\n \"claude-marketplace\",\n \"vercel-skills\",\n \"plain-skill\",\n \"claude-skill\",\n \"chatgpt-mcp\",\n \"generic-mcp\",\n ],\n }),\n skillMarkdown: ASSETS_SKILL_MD,\n },\n content: {\n skillName: \"content\",\n manifest: normalizeAppSkillManifest({\n schemaVersion: 1,\n id: \"content\",\n displayName: \"Content\",\n description:\n \"Edit docs, blogs, resources, and MDX content through the Content app, including database-backed local-folder sources.\",\n hosted: {\n url: \"https://content.agent-native.com\",\n mcpUrl: \"https://content.agent-native.com/mcp\",\n },\n mcp: { serverName: \"agent-native-content\" },\n auth: {\n mode: \"oauth\",\n setup:\n \"Authenticate with the Content MCP connector in the host app. Local-folder synchronization requires a local Content app, Agent Native Desktop, or trusted local bridge for filesystem access.\",\n },\n surfaces: [\n {\n id: \"content-documents\",\n action: \"list-documents\",\n path: \"/\",\n },\n {\n id: \"content-local-files\",\n action: \"share-local-file-document\",\n path: \"/local-files\",\n },\n ],\n skills: [\n {\n path: \"skills/content\",\n visibility: \"exported\",\n exportAs: \"content\",\n },\n ],\n hostAdapters: [\n \"codex-plugin\",\n \"claude-marketplace\",\n \"vercel-skills\",\n \"plain-skill\",\n \"claude-skill\",\n \"chatgpt-mcp\",\n \"generic-mcp\",\n ],\n }),\n skillMarkdown: CONTENT_SKILL_MD,\n },\n rewind: {\n skillName: \"rewind\",\n screenMemoryMcp: true,\n manifest: normalizeAppSkillManifest({\n schemaVersion: 1,\n id: \"rewind\",\n displayName: \"Rewind\",\n description:\n \"Retrieve recent local Clips screen memory, chapters, transcripts, and exact frames through a privacy-preserving agent workflow.\",\n hosted: {\n url: \"https://clips.agent-native.com\",\n mcpUrl: \"https://clips.agent-native.com/mcp\",\n },\n mcp: { serverName: \"clips-screen-memory\" },\n auth: { mode: \"none\" },\n surfaces: [\n {\n id: \"rewind-memory\",\n path: \"/\",\n description:\n \"Search and inspect the user's local Clips Rewind memory through a bounded local MCP broker.\",\n },\n ],\n skills: [\n {\n path: \"skills/rewind\",\n visibility: \"exported\",\n exportAs: \"rewind\",\n },\n ],\n hostAdapters: [\"plain-skill\", \"claude-skill\", \"generic-mcp\"],\n }),\n skillMarkdown: REWIND_SKILL_MD,\n },\n design: {\n skillName: \"design-exploration\",\n extraSkills: {\n \"visual-edit\": DESIGN_VISUAL_EDIT_SKILL_MD,\n },\n manifest: normalizeAppSkillManifest({\n schemaVersion: 1,\n id: \"design\",\n displayName: \"Design\",\n description:\n \"Explore, compare, iterate, and export interactive UI design prototypes from the Design app.\",\n hosted: {\n url: \"https://design.agent-native.com\",\n mcpUrl: \"https://design.agent-native.com/mcp\",\n },\n mcp: { serverName: \"agent-native-design\" },\n auth: {\n mode: \"oauth\",\n setup:\n \"Authenticate with the Design MCP connector in the host app. No shared secrets are stored in skill files.\",\n },\n surfaces: [\n {\n id: \"design-exploration\",\n action: \"present-design-variants\",\n path: \"/design\",\n },\n {\n id: \"visual-edit\",\n action: \"add-localhost-screens\",\n path: \"/design\",\n },\n ],\n skills: [\n {\n path: \"skills/design-exploration\",\n visibility: \"exported\",\n exportAs: \"design-exploration\",\n },\n {\n path: \"skills/visual-edit\",\n visibility: \"exported\",\n exportAs: \"visual-edit\",\n },\n ],\n hostAdapters: [\n \"codex-plugin\",\n \"claude-marketplace\",\n \"vercel-skills\",\n \"plain-skill\",\n \"claude-skill\",\n \"chatgpt-mcp\",\n \"generic-mcp\",\n ],\n }),\n skillMarkdown: DESIGN_EXPLORATION_SKILL_MD,\n },\n \"visual-plans\": {\n skillName: \"visual-plan\",\n extraSkills: {\n \"visual-recap\": VISUAL_RECAP_SKILL_MD,\n \"visualize-repo\": VISUALIZE_REPO_SKILL_MD,\n },\n // Sibling reference files materialized alongside each skill's SKILL.md\n // (progressive disclosure). Keyed by skill name -> relative path -> content.\n // Both plan skills ship the same canonical wireframe-quality reference; the\n // canvas / document-quality / exemplar references are visual-plan only.\n extraFiles: {\n \"visual-plan\": {\n \"references/wireframe.md\": WIREFRAME_REFERENCE_MD,\n \"references/canvas.md\": CANVAS_REFERENCE_MD,\n \"references/document-quality.md\": DOCUMENT_QUALITY_REFERENCE_MD,\n \"references/exemplar.md\": EXEMPLAR_REFERENCE_MD,\n \"references/connection.md\": CONNECTION_REFERENCE_MD,\n \"references/local-files.md\": LOCAL_FILES_REFERENCE_MD,\n },\n \"visual-recap\": {\n \"references/wireframe.md\": WIREFRAME_REFERENCE_MD,\n \"references/connection.md\": CONNECTION_REFERENCE_MD,\n \"references/local-files.md\": LOCAL_FILES_REFERENCE_MD,\n },\n },\n manifest: normalizeAppSkillManifest({\n schemaVersion: 1,\n id: \"visual-plans\",\n displayName: \"Agent-Native Plan\",\n description:\n \"Create rich interactive visual plans, recaps, and repo-native visual docs with diagrams, file maps, annotated code and diffs, API/schema summaries, feedback, and HTML export.\",\n hosted: {\n url: \"https://plan.agent-native.com\",\n mcpUrl: \"https://plan.agent-native.com/mcp\",\n },\n mcp: { serverName: \"plan\", aliases: [\"agent-native-plans\"] },\n auth: {\n mode: \"oauth\",\n setup:\n \"The marketplace plugin uses hosted Agent-Native Plans by default. To choose local-files or self-hosted mode, install with the Agent-Native CLI. Authenticate only for hosted/account-backed sharing.\",\n },\n surfaces: [\n {\n id: \"visual-plan\",\n action: \"create-visual-plan\",\n path: \"/plans\",\n description:\n \"Create a rich interactive visual plan instead of a plain-text plan, with diagrams, file maps, annotated code, questions, and optional UI/prototype review.\",\n },\n {\n id: \"visual-recap\",\n action: \"create-visual-recap\",\n path: \"/plans\",\n description:\n \"Create an interactive visual recap from a PR, commit, branch, or git diff so reviewers see the shape of the change before raw diff review.\",\n },\n {\n id: \"visualize-repo\",\n path: \"/local-plans\",\n description:\n \"Open a local, repo-backed visual documentation workspace for APIs, components, models, flows, comments, and coding-agent handoff.\",\n },\n ],\n skills: [\n {\n path: \"skills/visual-plan\",\n visibility: \"exported\",\n exportAs: \"visual-plan\",\n },\n {\n path: \"skills/visual-recap\",\n visibility: \"exported\",\n exportAs: \"visual-recap\",\n },\n {\n path: \"skills/visualize-repo\",\n visibility: \"exported\",\n exportAs: \"visualize-repo\",\n },\n ],\n hostAdapters: [\n \"codex-plugin\",\n \"claude-marketplace\",\n \"vercel-skills\",\n \"plain-skill\",\n \"claude-skill\",\n \"chatgpt-mcp\",\n \"generic-mcp\",\n ],\n }),\n skillMarkdown: VISUAL_PLANS_SKILL_MD,\n },\n \"context-xray\": {\n skillName: \"context-xray\",\n localOnly: true,\n manifest: normalizeAppSkillManifest({\n schemaVersion: 1,\n id: \"context-xray\",\n displayName: \"Context X-Ray\",\n description:\n \"Visualize local Codex and Claude Code context usage with warnings and optimization tips.\",\n hosted: {\n url: \"https://context-xray.agent-native.com\",\n mcpUrl: \"https://context-xray.agent-native.com/mcp\",\n },\n mcp: { serverName: \"agent-native-context-xray\" },\n auth: { mode: \"none\" },\n surfaces: [\n {\n id: \"context-xray-report\",\n path: \"/\",\n },\n ],\n skills: [\n {\n path: \"skills/context-xray\",\n visibility: \"exported\",\n exportAs: \"context-xray\",\n },\n ],\n hostAdapters: [\"plain-skill\", \"claude-skill\"],\n }),\n skillMarkdown: CONTEXT_XRAY_SKILL_MD,\n },\n} satisfies Record<\n string,\n {\n manifest: AppSkillManifest;\n skillMarkdown: string;\n skillName: string;\n extraSkills?: Record<string, string>;\n /**\n * Extra sibling files materialized alongside a skill's SKILL.md, for\n * progressive disclosure (e.g. `references/wireframe.md`). Keyed by skill\n * name, then by skill-relative path -> file content.\n */\n extraFiles?: Record<string, Record<string, string>>;\n localOnly?: boolean;\n screenMemoryMcp?: boolean;\n }\n>;\n\ntype BuiltInAppSkillId = keyof typeof BUILT_IN_APP_SKILLS;\ntype ModeAwareAppSkillId = \"visual-plans\" | \"content\";\n\nexport const AGENT_NATIVE_SKILL_METADATA_FILE = \"agent-native-skill.json\";\n\nconst BUILT_IN_APP_SKILL_ALIASES = {\n assets: \"assets\",\n asset: \"assets\",\n \"asset-generation\": \"assets\",\n images: \"assets\",\n image: \"assets\",\n \"image-generation\": \"assets\",\n \"agent-native-assets\": \"assets\",\n \"agent-native-images\": \"assets\",\n content: \"content\",\n docs: \"content\",\n documents: \"content\",\n \"local-content\": \"content\",\n \"content-local-files\": \"content\",\n \"agent-native-content\": \"content\",\n rewind: \"rewind\",\n \"screen-memory\": \"rewind\",\n \"clips-rewind\": \"rewind\",\n \"agent-native-rewind\": \"rewind\",\n design: \"design\",\n \"ui-design\": \"design\",\n \"ux-design\": \"design\",\n \"design-exploration\": \"design\",\n \"visual-edit\": \"design\",\n \"local-visual-edit\": \"design\",\n \"design-visual-edit\": \"design\",\n \"ux-exploration\": \"design\",\n \"agent-native-design\": \"design\",\n \"agent-native-design-exploration\": \"design\",\n \"visual-plans\": \"visual-plans\",\n \"visual-plan\": \"visual-plans\",\n \"visual-recap\": \"visual-plans\",\n \"visual-recaps\": \"visual-plans\",\n \"visualize-repo\": \"visual-plans\",\n visualize: \"visual-plans\",\n \"repo-visualizer\": \"visual-plans\",\n \"visual-docs\": \"visual-plans\",\n \"code-review-recap\": \"visual-plans\",\n \"code-review-recaps\": \"visual-plans\",\n \"html-plan\": \"visual-plans\",\n \"plan-mode\": \"visual-plans\",\n plannotate: \"visual-plans\",\n plannotator: \"visual-plans\",\n \"agent-native-visual-plans\": \"visual-plans\",\n \"context-xray\": \"context-xray\",\n \"local-context-xray\": \"context-xray\",\n xray: \"context-xray\",\n \"context-window\": \"context-xray\",\n \"context-usage\": \"context-xray\",\n \"agent-native-context-xray\": \"context-xray\",\n} satisfies Record<string, BuiltInAppSkillId>;\n\nconst BUILT_IN_APP_SKILL_DISPLAY_ALIASES = {\n assets: [\"images\", \"image-generation\", \"agent-native-images\"],\n content: [\n \"docs\",\n \"documents\",\n \"local-content\",\n \"content-local-files\",\n \"agent-native-content\",\n ],\n rewind: [\"screen-memory\", \"clips-rewind\", \"agent-native-rewind\"],\n design: [\n \"design-exploration\",\n \"visual-edit\",\n \"local-visual-edit\",\n \"ux-exploration\",\n \"agent-native-design-exploration\",\n ],\n \"visual-plans\": [\n \"visual-plan\",\n \"visual-recap\",\n \"visualize-repo\",\n \"code-review-recap\",\n \"html-plan\",\n \"plannotate\",\n ],\n \"context-xray\": [\"xray\", \"context-window\", \"context-usage\"],\n} satisfies Record<BuiltInAppSkillId, string[]>;\n\nconst CLIENT_LABELS: Record<ClientId, string> = {\n \"claude-code\": \"Claude Code\",\n \"claude-code-cli\": \"Claude Code CLI\",\n codex: \"Codex\",\n cowork: \"Claude Cowork\",\n cursor: \"Cursor\",\n opencode: \"OpenCode\",\n \"github-copilot\": \"GitHub Copilot / VS Code\",\n};\n\nconst CLIENT_HINTS: Record<ClientId, string> = {\n \"claude-code\": \".mcp.json or ~/.claude.json\",\n \"claude-code-cli\": \".mcp.json or ~/.claude.json\",\n codex: \"$CODEX_HOME/config.toml or ~/.codex/config.toml\",\n cowork: \"~/.cowork/mcp.json\",\n cursor: \".cursor/mcp.json or ~/.cursor/mcp.json\",\n opencode: \"opencode.json or ~/.config/opencode/opencode.json\",\n \"github-copilot\": \".vscode/mcp.json or VS Code user mcp.json\",\n};\n\ntype SkillInstructionClientId = ClientId | \"pi\";\n\nconst SKILLS_CLIENTS: ClientId[] = [\n \"claude-code\",\n \"codex\",\n \"cowork\",\n \"cursor\",\n \"opencode\",\n \"github-copilot\",\n];\nconst SKILL_INSTRUCTION_CLIENTS: SkillInstructionClientId[] = [\n \"codex\",\n \"claude-code\",\n \"pi\",\n];\nconst SKILL_INSTRUCTION_PROMPT_CLIENTS: SkillInstructionClientId[] = [\n \"codex\",\n \"claude-code\",\n];\n// Clients that don't write their own instruction files but READ the shared\n// `.agents/skills` path the codex install writes. In instructions/local-files\n// mode they resolve to that shared-agents install instead of being dropped, so\n// `--client cursor --mode local-files` (etc.) installs the skills they read\n// rather than failing with an empty client set.\nconst SHARED_AGENTS_READER_CLIENTS = new Set<SkillInstructionClientId>([\n \"cursor\",\n \"opencode\",\n \"github-copilot\",\n \"cowork\",\n]);\nconst SKILL_INSTRUCTION_CLIENT_LABELS: Record<\n SkillInstructionClientId,\n string\n> = {\n \"claude-code\": \"Claude Code\",\n \"claude-code-cli\": \"Claude Code\",\n codex: \"Shared .agents skills\",\n cowork: \"MCP only\",\n pi: \"Pi\",\n};\nconst SKILL_INSTRUCTION_CLIENT_HINTS: Record<SkillInstructionClientId, string> =\n {\n \"claude-code\":\n \"Also write Claude Code's native .claude/skills and commands files.\",\n \"claude-code-cli\":\n \"Also write Claude Code's native .claude/skills and commands files.\",\n codex:\n \"Project scope writes .agents skills/commands for Codex, Pi, Cursor, OpenCode, Copilot, and similar agents; user scope writes Codex's ~/.codex skills/commands.\",\n cowork: \"MCP only\",\n pi: \"Project scope writes .agents/skills plus .pi/prompts; user scope writes ~/.agents/skills plus ~/.pi/agent/prompts.\",\n };\n\ntype SkillsCommand = \"list\" | \"add\" | \"status\" | \"update\" | \"help\";\ntype PlanInstallMode = \"hosted\" | \"local-files\" | \"self-hosted\";\n\nexport interface ParsedSkillsArgs {\n command: SkillsCommand;\n target?: string;\n baseDir?: string;\n client: string;\n clientExplicit: boolean;\n clients?: SkillInstructionClientId[];\n plainSkillNames?: string[];\n scope: string;\n scopeExplicit: boolean;\n yes: boolean;\n dryRun: boolean;\n printJson: boolean;\n instructions: boolean;\n mcp: boolean;\n /**\n * Run the browser/device auth flow after registering a hosted MCP connector\n * so the user does not hit an OAuth wall on the first tool call. Default true;\n * `--no-connect` opts out and leaves authentication for the host/`agent-native\n * connect`.\n */\n connect: boolean;\n /**\n * Optional MCP URL override. When set, the skill's hosted MCP connector is\n * registered against this URL instead of the built-in hosted default — e.g.\n * an ngrok tunnel, a local dev origin, or a self-hosted deployment.\n */\n mcpUrl?: string;\n /**\n * Storage/backend mode for app-backed skills that support install modes. The\n * field name is kept for CLI/API compatibility with the original Plan-only\n * implementation.\n */\n planMode?: PlanInstallMode;\n /**\n * When installing the visual-plan skill, also write the PR Visual Recap\n * GitHub Action workflow into `.github/workflows/` so PRs get automatic\n * recaps. Only applies to the `visual-plan` target.\n */\n withGithubAction?: boolean;\n /**\n * Set once the PR Visual Recap workflow decision has already been made up\n * front (in `runSkills`, before any install/registration) so the per-target\n * `addAgentNativeSkill` doesn't prompt for it again mid-flow. The chosen\n * value lands in `withGithubAction`.\n */\n githubActionResolved?: boolean;\n /**\n * Plain skill repos can add a managed AGENTS.md / CLAUDE.md block for skills\n * that only become automatic through project instructions.\n */\n updateInstructions?: boolean;\n /**\n * When `--with-github-action` is set and the existing workflow file differs\n * from the bundled template, overwrite it. Without this flag the command\n * refuses and prints a message.\n */\n force?: boolean;\n}\n\nexport interface SkillsAddResult {\n id: string;\n displayName: string;\n instructionSource?: string;\n skillNames: string[];\n skillsAgents: string[];\n mcpUrl: string;\n mcpClients: ClientId[];\n dryRun: boolean;\n commands: string[];\n local?: boolean;\n scriptPath?: string;\n written?: string[];\n /**\n * True when the install also kicked off (or prepared) the browser/device auth\n * flow for the hosted MCP connector. False when connect was skipped\n * (`--no-connect`, no-auth skills, or non-interactive without a connect step).\n */\n connected?: boolean;\n /**\n * The exact `npx @agent-native/core@latest connect <url>` command to run when interactive auth\n * was skipped (non-interactive shell / CI). Empty when connect ran inline or\n * was not needed.\n */\n connectCommand?: string;\n /**\n * When `--with-github-action` installed the PR Visual Recap workflow, the\n * repo-relative path it was written to (and whether it overwrote an existing\n * file).\n */\n githubActionPath?: string;\n githubActionExisted?: boolean;\n githubActionSuggestedCommand?: string;\n localManifestPath?: string;\n planMode?: PlanInstallMode;\n}\n\ninterface SkillInstallMetadata {\n schemaVersion: 1;\n source: \"agent-native\";\n appSkillId: string;\n displayName: string;\n skillName: string;\n contentHash: string;\n mcpUrl: string;\n installedAt: string;\n installCommand: string;\n updateCommand: string;\n planMode?: PlanInstallMode;\n}\n\ninterface SkillFolderBundle {\n appSkillId: BuiltInAppSkillId;\n displayName: string;\n skillName: string;\n mcpUrl: string;\n files: Record<string, string>;\n contentHash: string;\n planMode?: PlanInstallMode;\n}\n\ninterface SkillInstallState {\n appSkillId: BuiltInAppSkillId;\n displayName: string;\n skillName: string;\n path: string;\n root: string;\n scope: \"project\" | \"user\";\n client: string;\n latestHash: string;\n installedHash: string | null;\n metadataHash?: string;\n planMode?: PlanInstallMode;\n mcpUrl?: string;\n current: boolean;\n managed: boolean;\n}\n\ninterface ScaffoldGuidanceState {\n kind: \"workspace-core\" | \"standalone\";\n displayName: string;\n templateName: \"workspace-core\" | \"headless\" | \"default\";\n path: string;\n sourcePath: string;\n projectRoot: string;\n workspaceRoot?: string;\n sharedPackageDir?: string;\n current: boolean;\n skillCount: number;\n}\n\ninterface SkillInstallTarget {\n id: string;\n displayName: string;\n loaded: LoadedAppSkillManifest;\n skillNames: string[];\n modeAwareId?: ModeAwareAppSkillId;\n materializeInstructions(outDir: string): string;\n cleanup?: () => void;\n}\n\ninterface RunCommandOptions {\n stdio?: \"inherit\" | \"stderr\" | \"silent\";\n}\n\nexport type SkillsCatalogMode = \"agent-native\" | \"all\";\n\nexport interface PublicSkillCatalogEntry {\n name: string;\n description?: string;\n}\n\ninterface ConnectSpinner {\n start(message?: string): void;\n clear(): void;\n}\n\nexport interface RunSkillsOptions {\n baseDir?: string;\n /**\n * Which skills appear in the shared add/list picker. `agent-native` is the\n * core CLI surface; `all` is used by @agent-native/skills to append public\n * skill-repo entries while keeping every prompt and install decision here.\n */\n catalogMode?: SkillsCatalogMode;\n /**\n * The plain skills repo/source to install when a public catalog entry is\n * selected. @agent-native/skills usually passes the materialized source root.\n */\n publicSkillSource?: string;\n /**\n * Public skill-repo entries discovered by @agent-native/skills. Core owns the\n * user-facing flow; the wrapper owns materializing the broader catalog.\n */\n publicSkillEntries?: PublicSkillCatalogEntry[];\n /**\n * Built-in Agent Native skill prompt/list entries to hide for wrapper CLIs.\n * Direct installs by explicit name still work; this only controls discovery.\n */\n hiddenBuiltInSkillTargets?: string[];\n isInteractive?: () => boolean;\n log?: (message: string) => void;\n /**\n * Optional output hook for the embedded `agent-native connect` transcript.\n * Defaults to `log`; the clack-based CLI uses this to render the multi-line\n * auth details as one continuous guide block instead of separate status logs.\n */\n connectLog?: (message: string) => void;\n /**\n * Optional spinner factory for the embedded connect flow. The default CLI only\n * enables this for real TTYs so captured/test output stays deterministic.\n */\n createConnectSpinner?: () => ConnectSpinner | undefined;\n promptClients?: (\n context: SkillsClientPromptContext,\n ) => Promise<SkillInstructionClientId[] | null>;\n promptSkills?: (\n context: SkillsTargetPromptContext,\n ) => Promise<string[] | null>;\n promptGithubAction?: (\n context: SkillsGithubActionPromptContext,\n ) => Promise<boolean | null>;\n promptScope?: (\n context: SkillsScopePromptContext,\n ) => Promise<\"project\" | \"user\" | null>;\n promptPlanMode?: (\n context: SkillsPlanModePromptContext,\n ) => Promise<PlanInstallMode | null>;\n promptPlanMcpUrl?: () => Promise<string | null>;\n promptUpdateInstructions?: () => Promise<boolean | null>;\n runCommand?: (\n cmd: string,\n args: string[],\n options?: RunCommandOptions,\n ) => Promise<number>;\n /**\n * Injectable connect/auth entrypoint (defaults to the real `agent-native\n * connect`). Tests stub this so the install flow does not perform a real\n * browser/device OAuth round-trip.\n */\n runConnect?: (args: string[]) => Promise<void>;\n /**\n * Best-effort install-funnel telemetry. Created once per `runSkills` run and\n * threaded through resolution/install/connect so each `track` is fire-and-\n * forget and never blocks or throws into the install flow. Absent when\n * `addAgentNativeSkill` is called directly (e.g. tests).\n */\n telemetry?: CliTelemetry;\n}\n\ninterface SkillsClientPromptContext {\n initialClients: SkillInstructionClientId[];\n options: Array<{\n value: SkillInstructionClientId;\n label: string;\n hint: string;\n }>;\n installsMcp: boolean;\n}\n\ninterface SkillsTargetPromptContext {\n initialTargets: string[];\n options: Array<{ value: string; label: string; hint: string }>;\n}\n\ninterface SkillsGithubActionPromptContext {\n workflowPath: string;\n setupCommand: string;\n docsUrl: string;\n}\n\ninterface SkillsScopePromptContext {\n initialScope: \"project\" | \"user\";\n}\n\ninterface SkillsPlanModePromptContext {\n initialMode: PlanInstallMode;\n}\n\nfunction normalizeKnownSkillTarget(\n value: string | undefined,\n): BuiltInAppSkillId | undefined {\n const key = value?.trim().toLowerCase();\n if (!key) return undefined;\n return BUILT_IN_APP_SKILL_ALIASES[key];\n}\n\nfunction isKnownSkill(value: string | undefined): boolean {\n return Boolean(normalizeKnownSkillTarget(value));\n}\n\nfunction isLocalOnlyBuiltInSkill(\n entry: (typeof BUILT_IN_APP_SKILLS)[BuiltInAppSkillId] | null | undefined,\n): boolean {\n return Boolean(entry && \"localOnly\" in entry && entry.localOnly);\n}\n\nfunction isScreenMemoryMcpBuiltInSkill(\n entry: (typeof BUILT_IN_APP_SKILLS)[BuiltInAppSkillId] | null | undefined,\n): boolean {\n return Boolean(entry && \"screenMemoryMcp\" in entry && entry.screenMemoryMcp);\n}\n\nfunction targetSupportsInstallMode(\n targetId: string | undefined,\n): targetId is ModeAwareAppSkillId {\n return targetId === \"visual-plans\" || targetId === \"content\";\n}\n\nfunction localFilesModeSkipsMcp(\n targetId: string | undefined,\n mode: PlanInstallMode | undefined,\n): boolean {\n return mode === \"local-files\" && targetSupportsInstallMode(targetId);\n}\n\nfunction builtInExtraSkills(\n entry: (typeof BUILT_IN_APP_SKILLS)[BuiltInAppSkillId],\n): Record<string, string> {\n return \"extraSkills\" in entry && entry.extraSkills ? entry.extraSkills : {};\n}\n\n/**\n * Sibling reference files for a skill (skill name -> relative path -> content),\n * materialized alongside its SKILL.md for progressive disclosure.\n */\nfunction builtInExtraFiles(\n entry: (typeof BUILT_IN_APP_SKILLS)[BuiltInAppSkillId],\n): Record<string, Record<string, string>> {\n return \"extraFiles\" in entry && entry.extraFiles ? entry.extraFiles : {};\n}\n\nfunction builtInSkillNames(\n entry: (typeof BUILT_IN_APP_SKILLS)[BuiltInAppSkillId],\n): string[] {\n return [entry.skillName, ...Object.keys(builtInExtraSkills(entry))];\n}\n\n/**\n * When a target names a single skill that lives inside a multi-skill bundle\n * (the plan bundle ships `visual-plan`, `visual-recap`, and `visualize-repo`),\n * restrict the install to just that skill. The bundle aliases (`visual-plans`,\n * `plannotate`, …) return undefined so they install every skill in the bundle.\n */\nfunction builtInOnlySkillNames(target: string): string[] | undefined {\n const normalized = target.trim().toLowerCase();\n if (normalized === \"visual-plan\") return [\"visual-plan\"];\n if (normalized === \"visual-recap\" || normalized === \"visual-recaps\") {\n return [\"visual-recap\"];\n }\n if (\n normalized === \"visualize-repo\" ||\n normalized === \"visualize\" ||\n normalized === \"repo-visualizer\" ||\n normalized === \"visual-docs\"\n ) {\n return [\"visualize-repo\"];\n }\n if (\n normalized === \"design-exploration\" ||\n normalized === \"agent-native-design-exploration\"\n ) {\n return [\"design-exploration\"];\n }\n if (\n normalized === \"visual-edit\" ||\n normalized === \"local-visual-edit\" ||\n normalized === \"design-visual-edit\"\n ) {\n return [\"visual-edit\"];\n }\n return undefined;\n}\n\nfunction stableSkillHash(files: Record<string, string>): string {\n const hash = createHash(\"sha256\");\n for (const rel of Object.keys(files).sort()) {\n if (rel === AGENT_NATIVE_SKILL_METADATA_FILE) continue;\n hash.update(rel);\n hash.update(\"\\0\");\n hash.update(files[rel]);\n hash.update(\"\\0\");\n }\n return hash.digest(\"hex\").slice(0, 16);\n}\n\nfunction insertAfterFrontmatter(markdown: string, block: string): string {\n if (!block.trim()) return markdown;\n const match = markdown.match(/^---\\n[\\s\\S]*?\\n---\\n/);\n if (!match) return `${block}\\n\\n${markdown}`;\n return `${match[0]}\\n${block.trim()}\\n\\n${markdown.slice(match[0].length)}`;\n}\n\nfunction planModeInstructionBlock(input: {\n mode: PlanInstallMode | undefined;\n mcpUrl?: string;\n}): string {\n if (input.mode === \"local-files\") {\n return `## Installed Mode\n\nDefault storage for this installation: local files. Create and update plans and\nrecaps as MDX folders under \\`plans/<slug>/\\` when they should be checked in, or\nunder a repo-ignored/temp folder when they should stay private scratch. Before\nauthoring structured MDX, run\n\\`npx @agent-native/core@latest plan blocks --out plan-blocks.md\\` and read the\nno-auth block catalog; it sends no plan content. Then run\n\\`npx @agent-native/core@latest plan local check --dir plans/<slug>\\`, then\n\\`npx @agent-native/core@latest plan local serve --dir plans/<slug> --kind plan|recap --open\\`,\nand report the local bridge URL from stdout or \\`plans/<slug>/.plan-url\\`. Treat\n\\`.plan-url\\` as a local token file and do not commit it. It opens the hosted Plan\nUI but reads from the localhost bridge on this machine, so it is not shareable\nacross machines. On macOS, use Chrome/Chromium if Safari blocks the localhost\nbridge; run \\`plan local verify --dir plans/<slug> --kind plan|recap\\` for\nheadless diagnostics. No sharing, all local. Use a hosted or self-hosted Plan MCP\nconnector only if the user explicitly asks to publish or share.`;\n }\n if (input.mode === \"self-hosted\") {\n return `## Installed Mode\n\nDefault storage for this installation: the configured self-hosted/custom Plan\napp${input.mcpUrl ? ` at \\`${input.mcpUrl}\\`` : \"\"}. Use that Plan MCP connector\nfor plans and recaps instead of assuming \\`https://plan.agent-native.com\\`.`;\n }\n return \"\";\n}\n\nfunction contentModeInstructionBlock(input: {\n mode: PlanInstallMode | undefined;\n mcpUrl?: string;\n}): string {\n if (input.mode === \"local-files\") {\n return `## Installed Mode\n\nDefault storage for this installation is Content's SQL database. This repo's\n\\`agent-native.json\\` declares \\`docs/\\`, \\`blog/\\`, \\`content/\\`, and\n\\`resources/\\` as local-folder sources with opaque connection ids; it does not\nselect a separate application mode. A trusted local Content app or Agent Native\nDesktop bridge imports those files into their workspace's canonical Files\ndatabase, after which normal Content document actions read and edit the SQL-backed\npages. Use \\`sync-manifest-local-folder-source\\` with each root's generated\nconnection id, or launch \\`agent-native content local-files <target>\\`, to connect\nand pull it. The hosted Content app cannot read private repo files by itself.`;\n }\n if (input.mode === \"self-hosted\") {\n return `## Installed Mode\n\nDefault storage for this installation: the configured self-hosted/custom Content\napp${input.mcpUrl ? ` at \\`${input.mcpUrl}\\`` : \"\"}. Use that Content MCP\nconnector instead of assuming \\`https://content.agent-native.com\\`.`;\n }\n return \"\";\n}\n\nfunction applyInstallModeToSkillMarkdown(\n markdown: string,\n input: {\n appSkillId: BuiltInAppSkillId;\n mode?: PlanInstallMode;\n mcpUrl?: string;\n },\n): string {\n let block = \"\";\n if (input.appSkillId === \"visual-plans\") {\n block = planModeInstructionBlock({\n mode: input.mode,\n mcpUrl: input.mcpUrl,\n });\n } else if (input.appSkillId === \"content\") {\n block = contentModeInstructionBlock({\n mode: input.mode,\n mcpUrl: input.mcpUrl,\n });\n }\n return insertAfterFrontmatter(markdown, block);\n}\n\nfunction skillFilesForBuiltIn(\n appSkillId: BuiltInAppSkillId,\n options: { planMode?: PlanInstallMode; mcpUrl?: string } = {},\n): Record<string, SkillFolderBundle> {\n const entry = BUILT_IN_APP_SKILLS[appSkillId];\n const skills: Record<string, string> = {\n [entry.skillName]: applyInstallModeToSkillMarkdown(entry.skillMarkdown, {\n appSkillId,\n mode: options.planMode,\n mcpUrl: options.mcpUrl,\n }),\n ...builtInExtraSkills(entry),\n };\n for (const [skillName, skillMarkdown] of Object.entries(\n builtInExtraSkills(entry),\n )) {\n skills[skillName] = applyInstallModeToSkillMarkdown(skillMarkdown, {\n appSkillId,\n mode: options.planMode,\n mcpUrl: options.mcpUrl,\n });\n }\n const extraFiles = builtInExtraFiles(entry);\n const out: Record<string, SkillFolderBundle> = {};\n for (const [skillName, skillMarkdown] of Object.entries(skills)) {\n const files = {\n \"SKILL.md\": skillMarkdown,\n ...(extraFiles[skillName] ?? {}),\n };\n out[skillName] = {\n appSkillId,\n displayName: entry.manifest.displayName,\n skillName,\n mcpUrl:\n isLocalOnlyBuiltInSkill(entry) ||\n isScreenMemoryMcpBuiltInSkill(entry) ||\n localFilesModeSkipsMcp(appSkillId, options.planMode)\n ? \"\"\n : (options.mcpUrl ?? entry.manifest.hosted.mcpUrl),\n files,\n contentHash: stableSkillHash(files),\n planMode: options.planMode,\n };\n }\n return out;\n}\n\nfunction latestSkillBundlesForTargets(\n appSkillIds: BuiltInAppSkillId[],\n): Record<string, SkillFolderBundle> {\n const out: Record<string, SkillFolderBundle> = {};\n for (const appSkillId of appSkillIds) {\n Object.assign(out, skillFilesForBuiltIn(appSkillId));\n }\n return out;\n}\n\nfunction writeSkillFolder(\n dir: string,\n bundle: SkillFolderBundle,\n installedAt = new Date().toISOString(),\n): void {\n const parent = path.dirname(dir);\n const tempDir = path.join(\n parent,\n `.${path.basename(dir)}.${process.pid}.${Date.now()}.tmp`,\n );\n try {\n fs.rmSync(tempDir, { recursive: true, force: true });\n fs.mkdirSync(tempDir, { recursive: true });\n for (const [rel, content] of Object.entries(bundle.files)) {\n const target = path.join(tempDir, rel);\n fs.mkdirSync(path.dirname(target), { recursive: true });\n fs.writeFileSync(target, content, \"utf-8\");\n }\n const metadata: SkillInstallMetadata = {\n schemaVersion: 1,\n source: \"agent-native\",\n appSkillId: bundle.appSkillId,\n displayName: bundle.displayName,\n skillName: bundle.skillName,\n contentHash: bundle.contentHash,\n mcpUrl: bundle.mcpUrl,\n installedAt,\n installCommand: `npx @agent-native/core@latest skills add ${bundle.skillName}`,\n updateCommand: `npx @agent-native/core@latest skills update ${bundle.skillName}`,\n ...(bundle.planMode ? { planMode: bundle.planMode } : {}),\n };\n fs.writeFileSync(\n path.join(tempDir, AGENT_NATIVE_SKILL_METADATA_FILE),\n `${JSON.stringify(metadata, null, 2)}\\n`,\n \"utf-8\",\n );\n fs.rmSync(dir, { recursive: true, force: true });\n fs.renameSync(tempDir, dir);\n } catch (error: any) {\n try {\n fs.rmSync(tempDir, { recursive: true, force: true });\n } catch {}\n throw new Error(\n `Cannot write Agent Native skill folder ${dir}: ${error?.message ?? error}`,\n { cause: error },\n );\n }\n}\n\nfunction isJsonRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value && typeof value === \"object\" && !Array.isArray(value));\n}\n\nfunction defaultContentLocalFilesAppConfig(): Record<string, unknown> {\n return {\n mode: \"local-files\",\n roots: [\n {\n name: \"Docs\",\n path: \"docs\",\n kind: \"docs\",\n extensions: [\".md\", \".mdx\"],\n },\n {\n name: \"Blog\",\n path: \"blog\",\n kind: \"blog\",\n extensions: [\".md\", \".mdx\"],\n },\n {\n name: \"Content\",\n path: \"content\",\n kind: \"content\",\n extensions: [\".md\", \".mdx\"],\n },\n {\n name: \"Resources\",\n path: \"resources\",\n kind: \"resources\",\n extensions: [\".md\", \".mdx\"],\n },\n ],\n components: \"components\",\n extensions: \"extensions\",\n hide: [\"**/_*.md\", \"**/_*.mdx\"],\n };\n}\n\nfunction contentLocalFilesManifestPath(baseDir: string): string {\n return path.join(baseDir, \"agent-native.json\");\n}\n\nfunction shouldWriteContentLocalFilesManifest(\n targetId: string | undefined,\n mode: PlanInstallMode | undefined,\n): boolean {\n return targetId === \"content\" && mode === \"local-files\";\n}\n\nfunction contentLocalFolderConnectionId(baseDir: string, rootPath: string) {\n const absoluteRootPath = path.resolve(baseDir, rootPath);\n let canonicalRootPath = absoluteRootPath;\n try {\n canonicalRootPath = fs.realpathSync(absoluteRootPath);\n } catch (error: any) {\n if (error?.code !== \"ENOENT\") throw error;\n }\n return `local-folder:${createHash(\"sha256\")\n .update(canonicalRootPath)\n .digest(\"base64url\")\n .slice(0, 24)}`;\n}\n\nfunction mergeContentLocalFilesManifest(\n existing: unknown,\n baseDir: string,\n): Record<string, unknown> {\n const manifest = isJsonRecord(existing) ? { ...existing } : {};\n if (manifest.version === undefined) manifest.version = 1;\n\n const apps = isJsonRecord(manifest.apps) ? { ...manifest.apps } : {};\n const contentApp = isJsonRecord(apps.content) ? { ...apps.content } : {};\n const defaults = defaultContentLocalFilesAppConfig();\n if (!Array.isArray(contentApp.roots) || contentApp.roots.length === 0) {\n contentApp.roots = defaults.roots;\n }\n contentApp.roots = contentApp.roots.map((root: unknown) => {\n if (!isJsonRecord(root) || typeof root.path !== \"string\") return root;\n const source = isJsonRecord(root.source) ? root.source : {};\n return {\n ...root,\n source: {\n ...source,\n type: \"local-folder\",\n connectionId:\n typeof source.connectionId === \"string\" && source.connectionId\n ? source.connectionId\n : contentLocalFolderConnectionId(baseDir, root.path),\n truthPolicy:\n typeof source.truthPolicy === \"string\"\n ? source.truthPolicy\n : \"source_primary\",\n },\n };\n });\n delete contentApp.mode;\n if (contentApp.components === undefined) {\n contentApp.components = defaults.components;\n }\n if (contentApp.extensions === undefined) {\n contentApp.extensions = defaults.extensions;\n }\n if (!Array.isArray(contentApp.hide) || contentApp.hide.length === 0) {\n contentApp.hide = defaults.hide;\n }\n apps.content = contentApp;\n manifest.apps = apps;\n return manifest;\n}\n\nfunction writeContentLocalFilesManifest(\n baseDir: string,\n options: { dryRun?: boolean } = {},\n): string {\n const manifestPath = contentLocalFilesManifestPath(baseDir);\n let existing: unknown = {};\n if (fs.existsSync(manifestPath)) {\n try {\n existing = JSON.parse(fs.readFileSync(manifestPath, \"utf-8\"));\n } catch (error: any) {\n throw new Error(\n `Could not parse ${manifestPath}: ${error?.message ?? error}`,\n );\n }\n }\n const manifest = mergeContentLocalFilesManifest(existing, baseDir);\n if (!options.dryRun) {\n fs.writeFileSync(\n manifestPath,\n `${JSON.stringify(manifest, null, 2)}\\n`,\n \"utf-8\",\n );\n }\n return manifestPath;\n}\n\n/**\n * The skills directory a built-in skill's instructions are copied into for a\n * given agent + scope. Mirrors the layout the skills installer uses so\n * `skills status` / `skills update` find the folders again.\n */\nfunction builtInSkillsRootForAgent(\n agent: string,\n scope: \"project\" | \"user\",\n baseDir: string,\n): string {\n const home = homeDir() ?? baseDir;\n if (scope === \"project\") {\n if (agent === \"claude-code\" || agent === \"claude-code-cli\") {\n return path.join(baseDir, \".claude\", \"skills\");\n }\n return path.join(baseDir, \".agents\", \"skills\");\n }\n if (agent === \"codex\") {\n return process.env.CODEX_HOME\n ? path.join(process.env.CODEX_HOME, \"skills\")\n : path.join(home, \".codex\", \"skills\");\n }\n if (agent === \"pi\") {\n return path.join(home, \".agents\", \"skills\");\n }\n if (\n agent === \"cursor\" ||\n agent === \"opencode\" ||\n agent === \"github-copilot\"\n ) {\n return path.join(home, \".agents\", \"skills\");\n }\n return path.join(home, \".claude\", \"skills\");\n}\n\nfunction builtInCommandsRootForAgent(\n agent: string,\n scope: \"project\" | \"user\",\n baseDir: string,\n): string {\n const home = homeDir() ?? baseDir;\n if (scope === \"project\") {\n if (agent === \"codex\") return path.join(baseDir, \".agents\", \"commands\");\n if (agent === \"pi\") return path.join(baseDir, \".pi\", \"prompts\");\n return path.join(baseDir, \".claude\", \"commands\");\n }\n if (agent === \"codex\") {\n return process.env.CODEX_HOME\n ? path.join(process.env.CODEX_HOME, \"commands\")\n : path.join(home, \".codex\", \"commands\");\n }\n if (agent === \"pi\") {\n const piHome =\n process.env.PI_CODING_AGENT_DIR || path.join(home, \".pi\", \"agent\");\n return path.join(piHome, \"prompts\");\n }\n return path.join(home, \".claude\", \"commands\");\n}\n\nfunction slashCommandForBuiltInSkill(skillName: string): string | null {\n if (skillName === \"visual-plan\") {\n return `---\ndescription: Create an interactive Agent-Native visual plan for the current task.\nargument-hint: [optional request or scope]\n---\n\nUse the visual-plan skill for this task. Treat any arguments as the user's\nrequested plan scope or focus:\n\n$ARGUMENTS\n`;\n }\n if (skillName === \"visual-recap\") {\n return `---\ndescription: Create an interactive Agent-Native visual recap for a PR, branch, commit, or diff.\nargument-hint: [PR, branch, commit, diff, or scope]\n---\n\nUse the visual-recap skill. Treat any arguments as the recap target or focus:\n\n$ARGUMENTS\n`;\n }\n if (skillName === \"visualize-repo\") {\n return `---\ndescription: Open or create a local Agent-Native visual docs workspace for this repo.\nargument-hint: [optional targets or focus]\n---\n\nUse the visualize-repo skill. Treat any arguments as source targets, repo areas,\nor review focus:\n\n$ARGUMENTS\n`;\n }\n return null;\n}\n\n/**\n * Write a built-in skill's instruction folders straight into each client's\n * skills directory. Built-in skills ship their SKILL.md inside this package, so\n * there is no need to shell out to the separate @agent-native/skills installer\n * (which would have to be published to npm first). Returns the written folders.\n */\nfunction installBuiltInInstructions(input: {\n appSkillId: BuiltInAppSkillId;\n onlySkillNames?: string[];\n skillsAgents: string[];\n scope: \"project\" | \"user\";\n baseDir: string;\n dryRun?: boolean;\n planMode?: PlanInstallMode;\n mcpUrl?: string;\n}): string[] {\n const bundles = Object.values(\n skillFilesForBuiltIn(input.appSkillId, {\n planMode: input.planMode,\n mcpUrl: input.mcpUrl,\n }),\n ).filter(\n (bundle) =>\n !input.onlySkillNames || input.onlySkillNames.includes(bundle.skillName),\n );\n const written: string[] = [];\n for (const agent of input.skillsAgents) {\n const root = builtInSkillsRootForAgent(agent, input.scope, input.baseDir);\n const commandsRoot = builtInCommandsRootForAgent(\n agent,\n input.scope,\n input.baseDir,\n );\n for (const bundle of bundles) {\n const dir = path.join(root, bundle.skillName);\n if (!input.dryRun) writeSkillFolder(dir, bundle);\n written.push(dir);\n const command = slashCommandForBuiltInSkill(bundle.skillName);\n if (command) {\n const commandPath = path.join(commandsRoot, `${bundle.skillName}.md`);\n if (!input.dryRun) {\n fs.mkdirSync(path.dirname(commandPath), { recursive: true });\n fs.writeFileSync(commandPath, command, \"utf-8\");\n }\n written.push(commandPath);\n }\n }\n }\n return written;\n}\n\nfunction listSkillFolderFiles(dir: string): Record<string, string> {\n const out: Record<string, string> = {};\n const walk = (current: string, prefix = \"\") => {\n for (const entry of fs.readdirSync(current, { withFileTypes: true })) {\n const rel = prefix ? `${prefix}/${entry.name}` : entry.name;\n const abs = path.join(current, entry.name);\n if (entry.isDirectory()) {\n walk(abs, rel);\n continue;\n }\n if (!entry.isFile() || rel === AGENT_NATIVE_SKILL_METADATA_FILE) continue;\n out[rel] = fs.readFileSync(abs, \"utf-8\");\n }\n };\n if (fs.existsSync(dir)) walk(dir);\n return out;\n}\n\nfunction readSkillInstallMetadata(\n dir: string,\n): SkillInstallMetadata | undefined {\n const file = path.join(dir, AGENT_NATIVE_SKILL_METADATA_FILE);\n if (!fs.existsSync(file)) return undefined;\n try {\n const parsed = JSON.parse(fs.readFileSync(file, \"utf-8\"));\n if (\n parsed &&\n parsed.source === \"agent-native\" &&\n typeof parsed.skillName === \"string\" &&\n typeof parsed.contentHash === \"string\"\n ) {\n return parsed as SkillInstallMetadata;\n }\n } catch {}\n return undefined;\n}\n\nfunction homeDir(): string | undefined {\n return process.env.HOME || os.homedir();\n}\n\nfunction skillSearchRoots(input: {\n baseDir: string;\n clients: SkillInstructionClientId[];\n scopes: Array<\"project\" | \"user\">;\n}): Array<{\n root: string;\n scope: \"project\" | \"user\";\n client: string;\n}> {\n const roots: Array<{\n root: string;\n scope: \"project\" | \"user\";\n client: string;\n }> = [];\n const clientSet = new Set<SkillInstructionClientId>(input.clients);\n const includeAll = input.clients.length === 0;\n const hasClient = (client: SkillInstructionClientId) =>\n includeAll || clientSet.has(client);\n const add = (\n root: string | undefined,\n scope: \"project\" | \"user\",\n client: string,\n ) => {\n if (root) roots.push({ root, scope, client });\n };\n\n if (input.scopes.includes(\"project\")) {\n if (hasClient(\"codex\")) {\n add(path.join(input.baseDir, \".agents\", \"skills\"), \"project\", \"codex\");\n }\n if (hasClient(\"claude-code\") || hasClient(\"claude-code-cli\")) {\n add(\n path.join(input.baseDir, \".claude\", \"skills\"),\n \"project\",\n \"claude-code\",\n );\n }\n if (hasClient(\"pi\")) {\n add(path.join(input.baseDir, \".agents\", \"skills\"), \"project\", \"pi\");\n add(path.join(input.baseDir, \".pi\", \"skills\"), \"project\", \"pi\");\n }\n if (includeAll) add(path.join(input.baseDir, \"skills\"), \"project\", \"repo\");\n }\n\n if (input.scopes.includes(\"user\")) {\n const home = homeDir();\n if (hasClient(\"codex\")) {\n add(\n process.env.CODEX_HOME\n ? path.join(process.env.CODEX_HOME, \"skills\")\n : undefined,\n \"user\",\n \"codex\",\n );\n add(\n home ? path.join(home, \".codex\", \"skills\") : undefined,\n \"user\",\n \"codex\",\n );\n }\n if (hasClient(\"claude-code\") || hasClient(\"claude-code-cli\")) {\n add(\n home ? path.join(home, \".claude\", \"skills\") : undefined,\n \"user\",\n \"claude-code\",\n );\n }\n if (hasClient(\"pi\")) {\n const piHome =\n process.env.PI_CODING_AGENT_DIR ||\n (home ? path.join(home, \".pi\", \"agent\") : undefined);\n add(\n home ? path.join(home, \".agents\", \"skills\") : undefined,\n \"user\",\n \"pi\",\n );\n add(piHome ? path.join(piHome, \"skills\") : undefined, \"user\", \"pi\");\n }\n }\n\n const seen = new Set<string>();\n return roots.filter((entry) => {\n const key = `${entry.scope}:${entry.client}:${path.resolve(entry.root)}`;\n if (seen.has(key)) return false;\n seen.add(key);\n return true;\n });\n}\n\nconst SCAFFOLD_GUIDANCE_TARGETS = new Set([\n \"scaffold\",\n \"generated\",\n \"generated-app\",\n \"generated-workspace\",\n \"workspace\",\n \"workspace-core\",\n \"framework-guidance\",\n]);\n\nfunction isScaffoldGuidanceTarget(value: string | undefined): boolean {\n if (!value) return false;\n return SCAFFOLD_GUIDANCE_TARGETS.has(value.trim().toLowerCase());\n}\n\nfunction corePackageRootDir(): string {\n const here = path.dirname(fileURLToPath(import.meta.url));\n return path.resolve(here, \"../..\");\n}\n\nfunction bundledScaffoldSkillsDir(\n templateName: ScaffoldGuidanceState[\"templateName\"],\n): string {\n return path.join(\n corePackageRootDir(),\n \"src\",\n \"templates\",\n templateName,\n \".agents\",\n \"skills\",\n );\n}\n\nfunction readJsonRecord(file: string): Record<string, unknown> | undefined {\n try {\n const parsed = JSON.parse(fs.readFileSync(file, \"utf-8\"));\n if (parsed && typeof parsed === \"object\" && !Array.isArray(parsed)) {\n return parsed as Record<string, unknown>;\n }\n } catch {}\n return undefined;\n}\n\nfunction readPackageJson(dir: string): Record<string, unknown> | undefined {\n return readJsonRecord(path.join(dir, \"package.json\"));\n}\n\nfunction packageName(pkg: Record<string, unknown> | undefined): string | null {\n return typeof pkg?.name === \"string\" ? pkg.name : null;\n}\n\nfunction workspaceCorePackageName(\n pkg: Record<string, unknown> | undefined,\n): string | null {\n const agentNative = pkg?.[\"agent-native\"];\n if (\n agentNative &&\n typeof agentNative === \"object\" &&\n !Array.isArray(agentNative) &&\n typeof (agentNative as Record<string, unknown>).workspaceCore === \"string\"\n ) {\n return (agentNative as Record<string, string>).workspaceCore;\n }\n return null;\n}\n\nfunction hasAgentNativeCoreDependency(\n pkg: Record<string, unknown> | undefined,\n): boolean {\n for (const field of [\"dependencies\", \"devDependencies\", \"peerDependencies\"]) {\n const deps = pkg?.[field];\n if (\n deps &&\n typeof deps === \"object\" &&\n !Array.isArray(deps) &&\n \"@agent-native/core\" in deps\n ) {\n return true;\n }\n }\n return false;\n}\n\nfunction markedScaffoldGuidanceTemplate(\n pkg: Record<string, unknown> | undefined,\n): \"headless\" | \"default\" | undefined {\n const agentNative = pkg?.[\"agent-native\"];\n if (\n !agentNative ||\n typeof agentNative !== \"object\" ||\n Array.isArray(agentNative)\n ) {\n return undefined;\n }\n const scaffold = (agentNative as Record<string, unknown>).scaffold;\n if (!scaffold || typeof scaffold !== \"object\" || Array.isArray(scaffold)) {\n return undefined;\n }\n const frameworkSkills = (scaffold as Record<string, unknown>).frameworkSkills;\n return frameworkSkills === \"headless\" || frameworkSkills === \"default\"\n ? frameworkSkills\n : undefined;\n}\n\nfunction findWorkspaceCorePackageDir(\n workspaceRoot: string,\n workspaceCoreName: string,\n): string | undefined {\n const packagesDir = path.join(workspaceRoot, \"packages\");\n if (!fs.existsSync(packagesDir)) return undefined;\n for (const entry of fs.readdirSync(packagesDir, { withFileTypes: true })) {\n if (!entry.isDirectory()) continue;\n const candidate = path.join(packagesDir, entry.name);\n if (packageName(readPackageJson(candidate)) === workspaceCoreName) {\n return candidate;\n }\n }\n const fallback = path.join(workspaceRoot, \"packages\", \"shared\");\n return fs.existsSync(path.join(fallback, \"package.json\"))\n ? fallback\n : undefined;\n}\n\nfunction findGeneratedWorkspace(startDir: string):\n | {\n workspaceRoot: string;\n sharedPackageDir: string;\n }\n | undefined {\n let current = path.resolve(startDir);\n while (true) {\n const pkg = readPackageJson(current);\n const workspaceCoreName = workspaceCorePackageName(pkg);\n if (workspaceCoreName && fs.existsSync(path.join(current, \"apps\"))) {\n const sharedPackageDir = findWorkspaceCorePackageDir(\n current,\n workspaceCoreName,\n );\n if (sharedPackageDir) {\n return { workspaceRoot: current, sharedPackageDir };\n }\n }\n const parent = path.dirname(current);\n if (parent === current) break;\n current = parent;\n }\n return undefined;\n}\n\nfunction detectStandaloneScaffoldTemplate(\n projectRoot: string,\n): \"headless\" | \"default\" | undefined {\n const pkg = readPackageJson(projectRoot);\n if (!hasAgentNativeCoreDependency(pkg)) return undefined;\n if (!fs.existsSync(path.join(projectRoot, \".agents\", \"skills\"))) {\n return undefined;\n }\n\n const markedTemplate = markedScaffoldGuidanceTemplate(pkg);\n if (markedTemplate) return markedTemplate;\n\n const hasAppDir = fs.existsSync(path.join(projectRoot, \"app\"));\n const hasHeadlessHello = fs.existsSync(\n path.join(projectRoot, \"actions\", \"hello.ts\"),\n );\n if (!hasAppDir && hasHeadlessHello) return \"headless\";\n\n const looksLikeDefaultTemplate =\n fs.existsSync(path.join(projectRoot, \"app\", \"routes\", \"database.tsx\")) &&\n fs.existsSync(path.join(projectRoot, \"app\", \"routes\", \"_index.tsx\")) &&\n fs.existsSync(path.join(projectRoot, \"actions\", \"view-screen.ts\"));\n return looksLikeDefaultTemplate ? \"default\" : undefined;\n}\n\nfunction listImmediateSkillDirs(dir: string): string[] {\n if (!fs.existsSync(dir)) return [];\n return fs\n .readdirSync(dir, { withFileTypes: true })\n .filter((entry) => entry.isDirectory())\n .map((entry) => entry.name)\n .sort();\n}\n\nfunction skillDirContentsMatch(sourceDir: string, targetDir: string): boolean {\n const expected = listSkillFolderFiles(sourceDir);\n const actual = listSkillFolderFiles(targetDir);\n const expectedFiles = Object.keys(expected).sort();\n const actualFiles = Object.keys(actual).sort();\n if (expectedFiles.length !== actualFiles.length) return false;\n for (let i = 0; i < expectedFiles.length; i += 1) {\n if (expectedFiles[i] !== actualFiles[i]) return false;\n }\n return expectedFiles.every((file) => expected[file] === actual[file]);\n}\n\nfunction scaffoldGuidanceCurrent(\n sourceRoot: string,\n targetRoot: string,\n): boolean {\n const skills = listImmediateSkillDirs(sourceRoot);\n if (skills.length === 0) return false;\n return skills.every((skill) =>\n skillDirContentsMatch(\n path.join(sourceRoot, skill),\n path.join(targetRoot, skill),\n ),\n );\n}\n\nfunction collectScaffoldGuidanceStates(\n parsed: ParsedSkillsArgs,\n options: RunSkillsOptions,\n): ScaffoldGuidanceState[] {\n if (parsed.target && !isScaffoldGuidanceTarget(parsed.target)) return [];\n if (parsed.scopeExplicit && parsed.scope !== \"project\") return [];\n\n const baseDir = path.resolve(options.baseDir ?? process.cwd());\n const workspace = findGeneratedWorkspace(baseDir);\n if (workspace) {\n const sourcePath = bundledScaffoldSkillsDir(\"workspace-core\");\n const targetPath = path.join(\n workspace.sharedPackageDir,\n \".agents\",\n \"skills\",\n );\n if (!fs.existsSync(sourcePath)) return [];\n return [\n {\n kind: \"workspace-core\",\n displayName: \"Generated workspace framework skills\",\n templateName: \"workspace-core\",\n path: targetPath,\n sourcePath,\n projectRoot: workspace.workspaceRoot,\n workspaceRoot: workspace.workspaceRoot,\n sharedPackageDir: workspace.sharedPackageDir,\n current: scaffoldGuidanceCurrent(sourcePath, targetPath),\n skillCount: listImmediateSkillDirs(sourcePath).length,\n },\n ];\n }\n\n const templateName = detectStandaloneScaffoldTemplate(baseDir);\n if (!templateName) return [];\n const sourcePath = bundledScaffoldSkillsDir(templateName);\n const targetPath = path.join(baseDir, \".agents\", \"skills\");\n if (!fs.existsSync(sourcePath)) return [];\n return [\n {\n kind: \"standalone\",\n displayName: `Generated ${templateName} app framework skills`,\n templateName,\n path: targetPath,\n sourcePath,\n projectRoot: baseDir,\n current: scaffoldGuidanceCurrent(sourcePath, targetPath),\n skillCount: listImmediateSkillDirs(sourcePath).length,\n },\n ];\n}\n\nfunction copyScaffoldGuidanceSkills(\n sourceRoot: string,\n targetRoot: string,\n): void {\n fs.mkdirSync(targetRoot, { recursive: true });\n for (const skill of listImmediateSkillDirs(sourceRoot)) {\n const targetSkillDir = path.join(targetRoot, skill);\n if (\n fs.existsSync(targetSkillDir) &&\n fs.lstatSync(targetSkillDir).isSymbolicLink()\n ) {\n continue;\n }\n fs.rmSync(targetSkillDir, { recursive: true, force: true });\n fs.cpSync(path.join(sourceRoot, skill), targetSkillDir, {\n recursive: true,\n });\n }\n}\n\nfunction updateScaffoldGuidanceStates(\n states: ScaffoldGuidanceState[],\n dryRun: boolean,\n): ScaffoldGuidanceState[] {\n const updated: ScaffoldGuidanceState[] = [];\n for (const state of states) {\n if (state.current) continue;\n if (!dryRun) {\n copyScaffoldGuidanceSkills(state.sourcePath, state.path);\n }\n updated.push({\n ...state,\n current: !dryRun,\n });\n }\n return updated;\n}\n\nfunction ensureWorkspaceRootSkillsLink(\n workspaceRoot: string,\n sharedPackageDir: string,\n): void {\n const sharedSkillsDir = path.join(sharedPackageDir, \".agents\", \"skills\");\n if (!fs.existsSync(sharedSkillsDir)) return;\n\n const agentsDir = path.join(workspaceRoot, \".agents\");\n const linkPath = path.join(agentsDir, \"skills\");\n const target = path.relative(agentsDir, sharedSkillsDir);\n\n fs.mkdirSync(agentsDir, { recursive: true });\n try {\n const stat = fs.lstatSync(linkPath);\n if (stat.isSymbolicLink()) {\n if (fs.readlinkSync(linkPath) === target) return;\n fs.unlinkSync(linkPath);\n } else {\n copyScaffoldGuidanceSkills(sharedSkillsDir, linkPath);\n return;\n }\n } catch {}\n\n try {\n fs.symlinkSync(\n target,\n linkPath,\n process.platform === \"win32\" ? \"junction\" : \"dir\",\n );\n } catch {\n try {\n fs.cpSync(sharedSkillsDir, linkPath, { recursive: true });\n } catch {}\n }\n}\n\nfunction refreshCopiedClaudeSkills(projectRoot: string): void {\n const agentsSkillsDir = path.join(projectRoot, \".agents\", \"skills\");\n const claudeSkillsDir = path.join(projectRoot, \".claude\", \"skills\");\n if (!fs.existsSync(agentsSkillsDir) || !fs.existsSync(claudeSkillsDir)) {\n return;\n }\n try {\n if (fs.lstatSync(claudeSkillsDir).isSymbolicLink()) return;\n copyScaffoldGuidanceSkills(agentsSkillsDir, claudeSkillsDir);\n } catch {}\n}\n\nfunction repairScaffoldAgentLinks(states: ScaffoldGuidanceState[]): void {\n const seen = new Set<string>();\n for (const state of states) {\n if (state.workspaceRoot && state.sharedPackageDir) {\n const key = `workspace:${state.workspaceRoot}`;\n if (seen.has(key)) continue;\n seen.add(key);\n ensureWorkspaceRootSkillsLink(\n state.workspaceRoot,\n state.sharedPackageDir,\n );\n setupAgentSymlinks(state.workspaceRoot);\n refreshCopiedClaudeSkills(state.workspaceRoot);\n setupAgentSymlinks(state.sharedPackageDir);\n refreshCopiedClaudeSkills(state.sharedPackageDir);\n const appsDir = path.join(state.workspaceRoot, \"apps\");\n if (fs.existsSync(appsDir)) {\n for (const entry of fs.readdirSync(appsDir, { withFileTypes: true })) {\n if (!entry.isDirectory()) continue;\n const appDir = path.join(appsDir, entry.name);\n if (fs.existsSync(path.join(appDir, \"package.json\"))) {\n setupAgentSymlinks(appDir);\n refreshCopiedClaudeSkills(appDir);\n }\n }\n }\n continue;\n }\n\n const key = `standalone:${state.projectRoot}`;\n if (seen.has(key)) continue;\n seen.add(key);\n setupAgentSymlinks(state.projectRoot);\n refreshCopiedClaudeSkills(state.projectRoot);\n }\n}\n\nfunction targetIdsForStatus(parsed: ParsedSkillsArgs): BuiltInAppSkillId[] {\n if (isScaffoldGuidanceTarget(parsed.target)) return [];\n if (!parsed.target) {\n return (Object.keys(BUILT_IN_APP_SKILLS) as BuiltInAppSkillId[]).filter(\n (id) => !isLocalOnlyBuiltInSkill(BUILT_IN_APP_SKILLS[id]),\n );\n }\n const known = normalizeKnownSkillTarget(parsed.target);\n if (!known) {\n throw new Error(\n `Unknown built-in skill: ${parsed.target}. Run \"npx @agent-native/core@latest skills list\".`,\n );\n }\n if (isLocalOnlyBuiltInSkill(BUILT_IN_APP_SKILLS[known])) {\n throw new Error(\n `${BUILT_IN_APP_SKILLS[known].manifest.displayName} is installed as a local command and cannot be refreshed with skills update yet.`,\n );\n }\n return [known];\n}\n\nfunction scopeFilterForStatus(\n parsed: ParsedSkillsArgs,\n): Array<\"project\" | \"user\"> {\n return parsed.scopeExplicit\n ? [parsed.scope as \"project\" | \"user\"]\n : [\"project\", \"user\"];\n}\n\nfunction clientFilterForStatus(\n parsed: ParsedSkillsArgs,\n): SkillInstructionClientId[] {\n return parsed.clientExplicit ? resolveSkillsClientArg(parsed.client) : [];\n}\n\nfunction collectSkillInstallStates(\n parsed: ParsedSkillsArgs,\n options: RunSkillsOptions,\n): SkillInstallState[] {\n const appSkillIds = targetIdsForStatus(parsed);\n const defaultLatest = latestSkillBundlesForTargets(appSkillIds);\n const roots = skillSearchRoots({\n baseDir: options.baseDir ?? process.cwd(),\n clients: clientFilterForStatus(parsed),\n scopes: scopeFilterForStatus(parsed),\n });\n const states: SkillInstallState[] = [];\n const seenDirs = new Set<string>();\n\n for (const root of roots) {\n for (const bundle of Object.values(defaultLatest)) {\n const dir = path.join(root.root, bundle.skillName);\n const resolvedDir = path.resolve(dir);\n if (seenDirs.has(resolvedDir) || !fs.existsSync(dir)) continue;\n if (!fs.existsSync(path.join(dir, \"SKILL.md\"))) continue;\n seenDirs.add(resolvedDir);\n const files = listSkillFolderFiles(dir);\n const metadata = readSkillInstallMetadata(dir);\n const stateBundle =\n skillFilesForBuiltIn(bundle.appSkillId, {\n planMode: metadata?.planMode,\n mcpUrl: metadata?.mcpUrl,\n })[bundle.skillName] ?? bundle;\n const installedHash =\n Object.keys(files).length > 0 ? stableSkillHash(files) : null;\n states.push({\n appSkillId: stateBundle.appSkillId,\n displayName: stateBundle.displayName,\n skillName: stateBundle.skillName,\n path: dir,\n root: root.root,\n scope: root.scope,\n client: root.client,\n latestHash: stateBundle.contentHash,\n installedHash,\n metadataHash: metadata?.contentHash,\n current: installedHash === stateBundle.contentHash,\n managed: metadata?.source === \"agent-native\",\n planMode: metadata?.planMode,\n mcpUrl: metadata?.mcpUrl,\n });\n }\n }\n\n return states.sort((a, b) =>\n `${a.skillName}:${a.path}`.localeCompare(`${b.skillName}:${b.path}`),\n );\n}\n\nfunction updateSkillInstallStates(\n states: SkillInstallState[],\n dryRun: boolean,\n): SkillInstallState[] {\n const updated: SkillInstallState[] = [];\n for (const state of states) {\n if (state.current && state.managed) continue;\n const bundle = skillFilesForBuiltIn(state.appSkillId, {\n planMode: state.planMode,\n mcpUrl: state.mcpUrl,\n })[state.skillName];\n if (!bundle) continue;\n if (!dryRun) writeSkillFolder(state.path, bundle);\n updated.push({\n ...state,\n current: !dryRun,\n installedHash: dryRun ? state.installedHash : bundle.contentHash,\n metadataHash: dryRun ? state.metadataHash : bundle.contentHash,\n });\n }\n return updated;\n}\n\nfunction normalizeClientIds(values: unknown): ClientId[] {\n if (!Array.isArray(values)) return [];\n const seen = new Set<ClientId>();\n const out: ClientId[] = [];\n for (const value of values) {\n if (typeof value !== \"string\") continue;\n const id = value.toLowerCase();\n if (!(CLIENTS as string[]).includes(id)) continue;\n const client = id as ClientId;\n if (seen.has(client)) continue;\n seen.add(client);\n out.push(client);\n }\n return out;\n}\n\nfunction isMcpClientId(value: SkillInstructionClientId): value is ClientId {\n return (CLIENTS as string[]).includes(value);\n}\n\nfunction normalizeSkillInstructionClientIds(\n values: unknown,\n): SkillInstructionClientId[] {\n if (!Array.isArray(values)) return [];\n const seen = new Set<SkillInstructionClientId>();\n const out: SkillInstructionClientId[] = [];\n for (const value of values) {\n if (typeof value !== \"string\") continue;\n const id = value.toLowerCase();\n let normalized: SkillInstructionClientId | null = null;\n if (id === \"pi\") {\n normalized = \"pi\";\n } else if ((CLIENTS as string[]).includes(id)) {\n const client = id as ClientId;\n normalized = client === \"claude-code-cli\" ? \"claude-code\" : client;\n }\n if (!normalized) continue;\n if (seen.has(normalized)) continue;\n seen.add(normalized);\n out.push(normalized);\n }\n return out;\n}\n\nfunction resolveSkillsClientArg(\n client: string,\n installsMcp = false,\n): SkillInstructionClientId[] {\n if (installsMcp)\n return normalizeSkillInstructionClientIds(resolveClients(client));\n const values = client.split(\",\").flatMap((raw) => {\n const id = raw.trim().toLowerCase();\n if (!id) return [];\n if (id === \"all\") return SKILL_INSTRUCTION_CLIENTS;\n if (id === \"pi\") return [\"pi\" as const];\n return resolveClients(id);\n });\n return normalizeSkillInstructionClientIds(values);\n}\n\nfunction skillsClients(installsMcp: boolean): SkillInstructionClientId[] {\n return installsMcp ? SKILLS_CLIENTS : SKILL_INSTRUCTION_PROMPT_CLIENTS;\n}\n\nfunction filterSkillsClients(\n clients: SkillInstructionClientId[],\n installsMcp: boolean,\n): SkillInstructionClientId[] {\n if (installsMcp) {\n return clients.filter(\n (client): client is ClientId =>\n isMcpClientId(client) && SKILLS_CLIENTS.includes(client),\n );\n }\n // Instructions/local-files mode: keep the first-class instruction writers, and\n // map shared-`.agents` readers (cursor/opencode/github-copilot/cowork) onto\n // the shared-agents install (codex) so they install the skills they read\n // rather than being silently dropped to an empty set.\n const out: SkillInstructionClientId[] = [];\n for (const client of clients) {\n const resolved = SKILL_INSTRUCTION_CLIENTS.includes(client)\n ? client\n : SHARED_AGENTS_READER_CLIENTS.has(client)\n ? \"codex\"\n : undefined;\n if (resolved && !out.includes(resolved)) out.push(resolved);\n }\n return out;\n}\n\nfunction clientPromptOptions(\n installsMcp: boolean,\n): SkillsClientPromptContext[\"options\"] {\n return skillsClients(installsMcp).map((client) => ({\n value: client,\n label:\n installsMcp && isMcpClientId(client)\n ? CLIENT_LABELS[client]\n : SKILL_INSTRUCTION_CLIENT_LABELS[client],\n hint:\n installsMcp && isMcpClientId(client)\n ? CLIENT_HINTS[client]\n : SKILL_INSTRUCTION_CLIENT_HINTS[client],\n }));\n}\n\nconst DEFAULT_PUBLIC_SKILLS_SOURCE = \"BuilderIO/skills\";\nconst PUBLIC_SKILL_TARGET_PREFIX = \"public-skills:\";\n\nconst BUILT_IN_SKILL_PROMPT_OPTIONS: SkillsTargetPromptContext[\"options\"] = [\n {\n value: \"visual-plan\",\n label: \"visual-plan\",\n hint: \"Rich interactive visual plan that turns ordinary text plans into diagrams, file maps, annotated code, questions, and UI/prototype review.\",\n },\n {\n value: \"visual-recap\",\n label: \"visual-recap\",\n hint: \"Interactive visual recap that maps PRs/diffs with diagrams, annotated diffs, API/schema summaries, and review notes.\",\n },\n {\n value: \"visualize-repo\",\n label: \"visualize-repo\",\n hint: \"Local repo visual docs workspace for APIs, components, models, flows, comments, and coding-agent handoff.\",\n },\n {\n value: \"assets\",\n label: \"assets\",\n hint: BUILT_IN_APP_SKILLS.assets.manifest.description,\n },\n {\n value: \"content\",\n label: \"content\",\n hint: BUILT_IN_APP_SKILLS.content.manifest.description,\n },\n {\n value: \"rewind\",\n label: \"rewind\",\n hint: BUILT_IN_APP_SKILLS.rewind.manifest.description,\n },\n {\n value: \"design-exploration\",\n label: \"design-exploration\",\n hint: BUILT_IN_APP_SKILLS.design.manifest.description,\n },\n {\n value: \"visual-edit\",\n label: \"visual-edit\",\n hint: \"Open a running local app in Design overview mode as URL-backed iframe screens.\",\n },\n {\n value: \"context-xray\",\n label: \"context-xray\",\n hint: BUILT_IN_APP_SKILLS[\"context-xray\"].manifest.description,\n },\n];\n\nconst DEFAULT_SKILL_PROMPT_TARGETS = [\n \"visual-plan\",\n \"visual-recap\",\n \"visualize-repo\",\n];\n\nfunction hiddenBuiltInSkillTargets(options: RunSkillsOptions): Set<string> {\n return new Set(\n (options.hiddenBuiltInSkillTargets ?? []).map((target) =>\n target.trim().toLowerCase(),\n ),\n );\n}\n\nfunction builtInSkillPromptOptions(\n options: RunSkillsOptions,\n): SkillsTargetPromptContext[\"options\"] {\n const hidden = hiddenBuiltInSkillTargets(options);\n return BUILT_IN_SKILL_PROMPT_OPTIONS.filter(\n (entry) => !hidden.has(entry.value),\n );\n}\n\nfunction publicSkillEntries(\n options: RunSkillsOptions,\n): PublicSkillCatalogEntry[] {\n if (options.catalogMode !== \"all\") return [];\n const seen = new Set<string>();\n return (options.publicSkillEntries ?? [])\n .map((entry) => ({\n name: entry.name.trim().toLowerCase(),\n description: entry.description,\n }))\n .filter((entry) => {\n if (!entry.name || isKnownSkill(entry.name) || seen.has(entry.name)) {\n return false;\n }\n seen.add(entry.name);\n return true;\n })\n .sort((a, b) => a.name.localeCompare(b.name));\n}\n\nfunction publicSkillNames(options: RunSkillsOptions): Set<string> {\n return new Set(publicSkillEntries(options).map((entry) => entry.name));\n}\n\nfunction publicSkillPromptOptions(\n options: RunSkillsOptions,\n): SkillsTargetPromptContext[\"options\"] {\n return publicSkillEntries(options).map((entry) => ({\n value: entry.name,\n label: entry.name,\n hint:\n entry.description ?? \"Public skill from the BuilderIO skills catalog.\",\n }));\n}\n\nfunction skillPromptOptions(\n options: RunSkillsOptions = {},\n): SkillsTargetPromptContext[\"options\"] {\n return [\n ...builtInSkillPromptOptions(options),\n ...publicSkillPromptOptions(options),\n ];\n}\n\nfunction defaultSkillPromptTargets(options: RunSkillsOptions): string[] {\n const available = new Set(\n skillPromptOptions(options).map((entry) => entry.value),\n );\n return DEFAULT_SKILL_PROMPT_TARGETS.filter((target) => available.has(target));\n}\n\nfunction publicSkillSelectionTarget(skillNames: string[]): string {\n return `${PUBLIC_SKILL_TARGET_PREFIX}${skillNames.join(\",\")}`;\n}\n\nfunction publicSkillSelectionNames(target: string): string[] | null {\n if (!target.startsWith(PUBLIC_SKILL_TARGET_PREFIX)) return null;\n return target\n .slice(PUBLIC_SKILL_TARGET_PREFIX.length)\n .split(\",\")\n .map((name) => name.trim().toLowerCase())\n .filter(Boolean);\n}\n\nfunction prVisualRecapWorkflowPath(baseDir: string): string {\n return path.join(baseDir, \".github\", \"workflows\", \"pr-visual-recap.yml\");\n}\n\nfunction prVisualRecapWorkflowDisplayPath(): string {\n return path.join(\".github\", \"workflows\", \"pr-visual-recap.yml\");\n}\n\nconst PR_VISUAL_RECAP_DOCS_URL =\n \"https://www.agent-native.com/docs/pr-visual-recap\";\n\nfunction prVisualRecapInstallCommand(): string {\n return \"npx @agent-native/core@latest skills add visual-recap --with-github-action\";\n}\n\nfunction prVisualRecapSetupCommand(): string {\n return \"npx @agent-native/core@latest recap setup\";\n}\n\nasync function promptForGithubAction(\n context: SkillsGithubActionPromptContext,\n): Promise<boolean | null> {\n const clack = await import(\"@clack/prompts\");\n const result = await clack.confirm({\n message:\n \"Optional: add automatic PR Visual Recaps? (GitHub Action)\\n\" +\n \" Posts a human-friendly recap on every pull request — a high-altitude\\n\" +\n \" overview of what the PR does, with annotated code, diagrams, and\\n\" +\n \" before/after notes instead of a raw diff.\\n\" +\n ` Learn more: ${PR_VISUAL_RECAP_DOCS_URL}\\n` +\n ` Writes ${context.workflowPath}; ${context.setupCommand} finishes the GitHub secrets.`,\n initialValue: false,\n });\n if (clack.isCancel(result)) {\n clack.cancel(\"Skipped PR Visual Recap workflow.\");\n return null;\n }\n return Boolean(result);\n}\n\nfunction shouldPrompt(parsed: ParsedSkillsArgs, options: RunSkillsOptions) {\n if (parsed.yes || parsed.printJson) return false;\n if (options.isInteractive) return options.isInteractive();\n if (process.env.AGENT_NATIVE_NO_PROMPT === \"1\") return false;\n if (process.env.CI === \"true\") return false;\n return !!process.stdin.isTTY && !!process.stdout.isTTY;\n}\n\nasync function promptForClients(\n context: SkillsClientPromptContext,\n): Promise<SkillInstructionClientId[] | null> {\n const clack = await import(\"@clack/prompts\");\n const message = context.installsMcp\n ? \"Install the MCP connector for which clients?\\n\" +\n \" (space toggles, enter confirms; saved for next time)\"\n : \"Where should the skill instructions be written?\\n\" +\n \" (space toggles, enter confirms; saved for next time)\";\n const result = await clack.multiselect({\n message,\n options: context.options,\n initialValues: context.initialClients,\n required: true,\n });\n if (clack.isCancel(result)) {\n clack.cancel(\"Cancelled.\");\n return null;\n }\n return normalizeSkillInstructionClientIds(result);\n}\n\nasync function promptForScope(\n context: SkillsScopePromptContext,\n): Promise<\"project\" | \"user\" | null> {\n const clack = await import(\"@clack/prompts\");\n const result = await clack.select({\n message: \"Where do you want to install these skills?\",\n options: [\n {\n value: \"project\",\n label: \"Project\",\n hint: \"This repo only (.agents / .claude in the current directory) — committed with your project\",\n },\n {\n value: \"user\",\n label: \"User\",\n hint: \"Your home directory (~/.codex, ~/.claude) — available across all projects\",\n },\n ],\n initialValue: context.initialScope,\n });\n if (clack.isCancel(result)) {\n clack.cancel(\"Cancelled.\");\n return null;\n }\n return result === \"project\" ? \"project\" : \"user\";\n}\n\nasync function promptForPlanMode(\n context: SkillsPlanModePromptContext,\n): Promise<PlanInstallMode | null> {\n const clack = await import(\"@clack/prompts\");\n const result = await clack.select({\n message: \"Where should visual plans and recaps live?\",\n options: [\n {\n value: \"hosted\",\n label: \"Hosted plans, shareable links (recommended)\",\n hint: \"100% free and open source. Supports comments, browser editor, and sharing. Requires one-time browser sign-in.\",\n },\n {\n value: \"local-files\",\n label: \"Local files only\",\n hint: \"Writes local MDX, starts a localhost bridge, and opens the hosted Plan UI. No sharing, all local.\",\n },\n {\n value: \"self-hosted\",\n label: \"Self-hosted/custom URL\",\n hint: \"Connect to your own Plan app or local dev tunnel.\",\n },\n ],\n initialValue: context.initialMode,\n });\n if (clack.isCancel(result)) {\n clack.cancel(\"Cancelled.\");\n return null;\n }\n return normalizePlanInstallMode(String(result));\n}\n\nasync function promptForPlanMcpUrl(): Promise<string | null> {\n const clack = await import(\"@clack/prompts\");\n const result = await clack.text({\n message: \"Plan app URL or MCP URL\",\n placeholder: \"https://my-plan-app.example.com\",\n validate(value) {\n try {\n resolveMcpUrlOverride(value);\n return undefined;\n } catch (err: any) {\n return err?.message ?? \"Enter a valid http:// or https:// URL.\";\n }\n },\n });\n if (clack.isCancel(result)) {\n clack.cancel(\"Cancelled.\");\n return null;\n }\n return String(result).trim();\n}\n\nasync function promptForUpdateInstructions(): Promise<boolean | null> {\n const clack = await import(\"@clack/prompts\");\n const result = await clack.confirm({\n message:\n \"Add managed AGENTS.md / CLAUDE.md instructions for always-on skill behavior?\",\n initialValue: true,\n });\n if (clack.isCancel(result)) {\n clack.cancel(\"Skipped managed instruction updates.\");\n return null;\n }\n return Boolean(result);\n}\n\nasync function promptForSkills(\n context: SkillsTargetPromptContext,\n): Promise<string[] | null> {\n const clack = await import(\"@clack/prompts\");\n const result = await clack.multiselect({\n message:\n \"Which Agent Native skills do you want to install?\\n\" +\n \" (space toggles, enter confirms)\",\n options: context.options,\n initialValues: context.initialTargets,\n required: true,\n });\n if (clack.isCancel(result)) {\n clack.cancel(\"Cancelled.\");\n return null;\n }\n if (!Array.isArray(result)) return [];\n return result.filter((value): value is string => typeof value === \"string\");\n}\n\nasync function resolveSkillsClients(\n parsed: ParsedSkillsArgs,\n options: RunSkillsOptions,\n installsMcp: boolean,\n): Promise<SkillInstructionClientId[] | null> {\n if (parsed.clientExplicit || !shouldPrompt(parsed, options)) {\n const clients = filterSkillsClients(\n resolveSkillsClientArg(parsed.client, installsMcp),\n installsMcp,\n );\n if (clients.length === 0) {\n throw new Error(\n installsMcp\n ? \"MCP setup supports Claude Code, Codex, Claude Cowork, Cursor, OpenCode, or GitHub Copilot / VS Code clients. Use --mode local-files or --no-mcp for Pi.\"\n : \"Skill instructions use shared .agents for Codex, Pi, Cursor, OpenCode, Copilot, and similar agents, or Claude Code's native files.\",\n );\n }\n return clients;\n }\n const initialClients = skillsClients(installsMcp);\n const prompt = options.promptClients ?? promptForClients;\n const selected = normalizeSkillInstructionClientIds(\n await prompt({\n initialClients,\n options: clientPromptOptions(installsMcp),\n installsMcp,\n }),\n );\n if (selected.length === 0) return null;\n if (!parsed.dryRun) {\n try {\n writeConnectClientPreferences(selected.filter(isMcpClientId));\n } catch {}\n }\n return selected;\n}\n\nfunction normalizePlanInstallMode(value: string | undefined): PlanInstallMode {\n const normalized = value?.trim().toLowerCase();\n if (!normalized || normalized === \"hosted\") return \"hosted\";\n if (\n normalized === \"local\" ||\n normalized === \"local-file\" ||\n normalized === \"local-files\" ||\n normalized === \"files\"\n ) {\n return \"local-files\";\n }\n if (\n normalized === \"self-hosted\" ||\n normalized === \"selfhosted\" ||\n normalized === \"custom\" ||\n normalized === \"custom-url\"\n ) {\n return \"self-hosted\";\n }\n throw new Error(\n '--mode must be one of \"hosted\", \"local-files\", or \"self-hosted\".',\n );\n}\n\nfunction targetIncludesPlans(target: string): boolean {\n return normalizeKnownSkillTarget(target) === \"visual-plans\";\n}\n\nfunction targetsIncludePlans(targets: string[]): boolean {\n return targets.some(targetIncludesPlans);\n}\n\nfunction targetIncludesInstallModeSkill(target: string): boolean {\n return targetSupportsInstallMode(normalizeKnownSkillTarget(target));\n}\n\nfunction targetsIncludeInstallModeSkills(targets: string[]): boolean {\n return targets.some(targetIncludesInstallModeSkill);\n}\n\nfunction planSkillNamesSelected(skillNames: string[] | undefined): boolean {\n return Boolean(\n skillNames?.some(\n (name) => normalizeKnownSkillTarget(name) === \"visual-plans\",\n ),\n );\n}\n\nfunction installModeSkillNamesSelected(\n skillNames: string[] | undefined,\n): boolean {\n return Boolean(\n skillNames?.some((name) =>\n targetSupportsInstallMode(normalizeKnownSkillTarget(name)),\n ),\n );\n}\n\nfunction shouldForwardPlanModeFlag(\n target: string,\n skillNames: string[] | undefined,\n): boolean {\n return (\n targetIncludesInstallModeSkill(target) ||\n installModeSkillNamesSelected(skillNames)\n );\n}\n\nfunction recapSkillNamesSelected(skillNames: string[] | undefined): boolean {\n return Boolean(\n skillNames?.some((name) => {\n const normalized = name.trim().toLowerCase();\n return (\n normalized === \"visual-recap\" ||\n normalized === \"visual-recaps\" ||\n normalizeKnownSkillTarget(normalized) === \"visual-plans\"\n );\n }),\n );\n}\n\nfunction resolveSelectedSkillTargets(\n selected: string[],\n options: RunSkillsOptions,\n): string[] {\n const publicNames = publicSkillNames(options);\n const builtInSelections: string[] = [];\n const publicSelections: string[] = [];\n\n for (const raw of selected) {\n const skill = raw.trim().toLowerCase();\n if (!skill) continue;\n if (isKnownSkill(skill)) {\n builtInSelections.push(skill);\n continue;\n }\n if (publicNames.has(skill)) {\n publicSelections.push(skill);\n continue;\n }\n throw new Error(\n `Unknown skill: ${raw}. Run \"npx @agent-native/core@latest skills list\".`,\n );\n }\n\n const out: string[] = [];\n const planSubskills = [\"visual-plan\", \"visual-recap\", \"visualize-repo\"];\n const selectedPlanSubskills = planSubskills.filter((skill) =>\n builtInSelections.includes(skill),\n );\n if (selectedPlanSubskills.length === planSubskills.length) {\n out.push(\"visual-plans\");\n } else {\n out.push(...selectedPlanSubskills);\n }\n out.push(\n ...builtInSelections.filter(\n (skill) => !planSubskills.includes(skill) && !out.includes(skill),\n ),\n );\n if (publicSelections.length > 0) {\n out.push(publicSkillSelectionTarget([...new Set(publicSelections)]));\n }\n return out;\n}\n\nasync function resolveSkillTargets(\n parsed: ParsedSkillsArgs,\n options: RunSkillsOptions,\n): Promise<string[] | null> {\n if (!parsed.target && parsed.plainSkillNames?.length) {\n return resolveSelectedSkillTargets(parsed.plainSkillNames, options);\n }\n if (parsed.target || !shouldPrompt(parsed, options)) {\n const target = parsed.target ?? \"assets\";\n if (!parsed.target) return [target];\n const normalizedTarget = target.trim().toLowerCase();\n if (publicSkillNames(options).has(normalizedTarget)) {\n return [publicSkillSelectionTarget([normalizedTarget])];\n }\n return [target];\n }\n const prompt = options.promptSkills ?? promptForSkills;\n const promptOptions = skillPromptOptions(options);\n // The interactive multiselect skill picker is about to be shown (no --skill /\n // target passed and we are interactive) — record the funnel \"prompted\" step.\n options.telemetry?.track(\"skills_cli skills prompted\", {\n availableCount: promptOptions.length,\n available: promptOptions.map((option) => option.value).join(\",\"),\n });\n const selected = await prompt({\n initialTargets: defaultSkillPromptTargets(options),\n options: promptOptions,\n });\n if (!selected || selected.length === 0) return null;\n return resolveSelectedSkillTargets(selected, options);\n}\n\nexport function parseSkillsArgs(argv: string[]): ParsedSkillsArgs {\n const first = argv[0];\n let command: SkillsCommand = \"list\";\n let args = argv;\n if (first === \"help\" || first === \"--help\" || first === \"-h\") {\n command = \"help\";\n args = argv.slice(1);\n } else if (\n first === \"list\" ||\n first === \"add\" ||\n first === \"status\" ||\n first === \"update\"\n ) {\n command = first;\n args = argv.slice(1);\n } else if (first) {\n command = \"add\";\n }\n\n const out: ParsedSkillsArgs = {\n command,\n client: \"all\",\n clientExplicit: false,\n scope: \"user\",\n scopeExplicit: false,\n yes: false,\n dryRun: false,\n printJson: false,\n instructions: true,\n mcp: true,\n connect: true,\n };\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n const eat = (flag: string): string | undefined => {\n if (arg === flag) {\n const next = args[++i];\n if (!next || next.startsWith(\"-\")) {\n throw new Error(`Missing value for ${flag}.`);\n }\n return next;\n }\n if (arg.startsWith(`${flag}=`)) {\n const value = arg.slice(flag.length + 1);\n if (!value) throw new Error(`Missing value for ${flag}.`);\n return value;\n }\n return undefined;\n };\n let value: string | undefined;\n if ((value = eat(\"--client\")) !== undefined) {\n out.client = value;\n out.clientExplicit = true;\n } else if ((value = eat(\"--agent\")) !== undefined) {\n out.client = value;\n out.clientExplicit = true;\n } else if ((value = eat(\"-a\")) !== undefined) {\n out.client = value;\n out.clientExplicit = true;\n } else if ((value = eat(\"--skill\")) !== undefined) {\n out.plainSkillNames = [...(out.plainSkillNames ?? []), value];\n } else if ((value = eat(\"-s\")) !== undefined) {\n out.plainSkillNames = [...(out.plainSkillNames ?? []), value];\n } else if ((value = eat(\"--scope\")) !== undefined) {\n out.scope = value;\n out.scopeExplicit = true;\n } else if ((value = eat(\"--cwd\")) !== undefined) out.baseDir = value;\n else if ((value = eat(\"--mcp-url\")) !== undefined) out.mcpUrl = value;\n else if ((value = eat(\"--mode\")) !== undefined)\n out.planMode = normalizePlanInstallMode(value);\n else if (arg === \"--hosted\") out.planMode = \"hosted\";\n else if (arg === \"--local\" || arg === \"--local-files\")\n out.planMode = \"local-files\";\n else if (arg === \"--self-hosted\" || arg === \"--custom-url\")\n out.planMode = \"self-hosted\";\n else if (arg === \"--yes\" || arg === \"-y\") out.yes = true;\n else if (arg === \"--dry-run\") out.dryRun = true;\n else if (arg === \"--json\") out.printJson = true;\n else if (arg === \"-g\" || arg === \"--global\") {\n out.scope = \"user\";\n out.scopeExplicit = true;\n } else if (arg === \"--project\") {\n out.scope = \"project\";\n out.scopeExplicit = true;\n } else if (arg === \"--copy\") {\n // Compatibility with @agent-native/skills. Core always copies skill\n // instructions instead of linking to the source repo.\n } else if (arg === \"--mcp-only\") out.instructions = false;\n else if (arg === \"--instructions-only\" || arg === \"--no-mcp\")\n out.mcp = false;\n else if (arg === \"--no-connect\" || arg === \"--skip-connect\")\n out.connect = false;\n else if (arg === \"--with-github-action\" || arg === \"--with-github-actions\")\n out.withGithubAction = true;\n else if (arg === \"--update-instructions\") out.updateInstructions = true;\n else if (arg === \"--no-update-instructions\") out.updateInstructions = false;\n else if (arg === \"--force\") out.force = true;\n else if (arg.startsWith(\"-\")) throw new Error(`Unknown option: ${arg}`);\n else if (!out.target) out.target = arg;\n else throw new Error(`Unexpected argument: ${arg}`);\n }\n\n if (out.scope !== \"user\" && out.scope !== \"project\") {\n throw new Error(\"--scope must be either user or project.\");\n }\n if (out.planMode === \"local-files\" && out.mcpUrl) {\n throw new Error(\"--mode local-files cannot be combined with --mcp-url.\");\n }\n return out;\n}\n\nfunction loadSkillTarget(\n target: string,\n onlySkillNames?: string[],\n): SkillInstallTarget {\n const knownTarget = normalizeKnownSkillTarget(target);\n if (knownTarget) {\n const builtIn = BUILT_IN_APP_SKILLS[knownTarget];\n const skillNames = builtInSkillNames(builtIn).filter(\n (name) => !onlySkillNames || onlySkillNames.includes(name),\n );\n return {\n id: builtIn.manifest.id,\n displayName: builtIn.manifest.displayName,\n loaded: {\n manifest: builtIn.manifest,\n file: `<built-in:${builtIn.manifest.id}>`,\n dir: process.cwd(),\n },\n skillNames,\n modeAwareId: targetSupportsInstallMode(knownTarget)\n ? knownTarget\n : undefined,\n materializeInstructions(outDir) {\n const bundles = skillFilesForBuiltIn(knownTarget);\n for (const bundle of Object.values(bundles)) {\n if (onlySkillNames && !onlySkillNames.includes(bundle.skillName)) {\n continue;\n }\n writeSkillFolder(\n path.join(outDir, \"skills\", bundle.skillName),\n bundle,\n );\n }\n return outDir;\n },\n };\n }\n\n const resolved = path.resolve(target);\n const manifestFile = fs.statSync(resolved).isDirectory()\n ? path.join(resolved, \"agent-native.app-skill.json\")\n : resolved;\n const loaded = loadAppSkillManifest(manifestFile);\n return {\n id: loaded.manifest.id,\n displayName: loaded.manifest.displayName,\n loaded,\n skillNames: loaded.manifest.skills\n .filter(\n (skill) =>\n skill.visibility === \"exported\" || skill.visibility === \"both\",\n )\n .map((skill) => skill.exportAs ?? path.basename(skill.path)),\n modeAwareId: targetSupportsInstallMode(loaded.manifest.id)\n ? loaded.manifest.id\n : undefined,\n materializeInstructions(outDir) {\n const packed = buildAppSkillPack(loaded, outDir);\n const vercelAdapter = path.join(\n packed.outDir,\n \"adapters\",\n \"vercel-skills\",\n );\n return fs.existsSync(vercelAdapter) ? vercelAdapter : packed.outDir;\n },\n };\n}\n\nfunction skillsAgentsForClients(\n clients: SkillInstructionClientId[],\n): SkillInstructionClientId[] {\n const agents = new Set<SkillInstructionClientId>();\n for (const client of clients) {\n if (client === \"codex\") agents.add(\"codex\");\n if (client === \"claude-code\" || client === \"claude-code-cli\") {\n agents.add(\"claude-code\");\n }\n if (client === \"pi\") agents.add(\"pi\");\n }\n return [...agents];\n}\n\nfunction shellArg(value: string): string {\n if (/^[A-Za-z0-9_/:=.,@+-]+$/.test(value)) return value;\n return `'${value.replace(/'/g, `'\\\\''`)}'`;\n}\n\nfunction commandString(cmd: string, args: string[]): string {\n return [cmd, ...args].map(shellArg).join(\" \");\n}\n\nfunction clientArgForClients(clients: SkillInstructionClientId[]): string {\n if (clients.length === CLIENTS.length && clients.every(isMcpClientId))\n return \"all\";\n if (clients.length === 1) return clients[0];\n return clients.join(\",\");\n}\n\nfunction preserveMcpUrlAppPathOverride(\n target: SkillInstallTarget,\n input: string | undefined,\n): SkillInstallTarget {\n if (!input) return target;\n let parsed: URL;\n try {\n parsed = new URL(input);\n } catch {\n return target;\n }\n const trimmedPath = parsed.pathname.replace(/\\/+$/, \"\");\n const mcpSuffix = [MCP_LEGACY_ROUTE_PREFIX, MCP_PUBLIC_ROUTE_PREFIX].find(\n (suffix) => trimmedPath === suffix || trimmedPath.endsWith(suffix),\n );\n const appPath = mcpSuffix\n ? trimmedPath.slice(0, -mcpSuffix.length).replace(/\\/+$/, \"\")\n : trimmedPath;\n if (!appPath) return target;\n const url = `${parsed.origin}${appPath}`;\n return {\n ...target,\n loaded: {\n ...target.loaded,\n manifest: {\n ...target.loaded.manifest,\n hosted: { url, mcpUrl: `${url}${MCP_PUBLIC_ROUTE_PREFIX}` },\n },\n },\n };\n}\n\nfunction dryRunInstallCommand(\n parsed: ParsedSkillsArgs,\n target: string,\n options: { modeAwareTargetId?: string } = {},\n): string {\n const clients =\n parsed.clients ??\n resolveSkillsClientArg(parsed.client, targetInstallsMcp(target, parsed));\n const args = [\n \"@agent-native/core@latest\",\n \"skills\",\n \"add\",\n target,\n \"--client\",\n clientArgForClients(clients),\n \"--scope\",\n parsed.scope,\n ];\n const forwardsPlanFlags = shouldForwardPlanModeFlag(\n target,\n parsed.plainSkillNames,\n );\n const forwardsInstallMode =\n forwardsPlanFlags || targetSupportsInstallMode(options.modeAwareTargetId);\n if (forwardsInstallMode && parsed.planMode)\n args.push(\"--mode\", parsed.planMode);\n if (parsed.mcpUrl) args.push(\"--mcp-url\", parsed.mcpUrl);\n if (parsed.instructions && !parsed.mcp) args.push(\"--instructions-only\");\n if (!parsed.instructions && parsed.mcp) args.push(\"--mcp-only\");\n if (!parsed.connect) args.push(\"--no-connect\");\n if (parsed.withGithubAction) args.push(\"--with-github-action\");\n if (parsed.updateInstructions === true) args.push(\"--update-instructions\");\n if (parsed.updateInstructions === false)\n args.push(\"--no-update-instructions\");\n if (parsed.yes || isKnownSkill(target)) args.push(\"--yes\");\n return commandString(\"npx\", args);\n}\n\nasync function runCommand(\n cmd: string,\n args: string[],\n options: RunCommandOptions = {},\n): Promise<number> {\n return new Promise((resolve, reject) => {\n const pipeToStderr = options.stdio === \"stderr\";\n const silent = options.stdio === \"silent\";\n const stdoutChunks: Buffer[] = [];\n const stderrChunks: Buffer[] = [];\n const child = spawn(cmd, args, {\n stdio: pipeToStderr || silent ? [\"inherit\", \"pipe\", \"pipe\"] : \"inherit\",\n shell: process.platform === \"win32\",\n env: process.env,\n });\n if (pipeToStderr) {\n child.stdout?.on(\"data\", (chunk) => process.stderr.write(chunk));\n child.stderr?.on(\"data\", (chunk) => process.stderr.write(chunk));\n } else if (silent) {\n child.stdout?.on(\"data\", (chunk) =>\n stdoutChunks.push(Buffer.from(chunk)),\n );\n child.stderr?.on(\"data\", (chunk) =>\n stderrChunks.push(Buffer.from(chunk)),\n );\n }\n child.on(\"error\", reject);\n child.on(\"exit\", (code, signal) => {\n if (signal) {\n reject(new Error(`${cmd} was interrupted by ${signal}.`));\n return;\n }\n if (silent && code !== 0) {\n for (const chunk of stdoutChunks) process.stderr.write(chunk);\n for (const chunk of stderrChunks) process.stderr.write(chunk);\n }\n resolve(code ?? 0);\n });\n });\n}\n\n/**\n * Resolve a `--mcp-url` override into the `{ url, mcpUrl }` pair the manifest\n * expects. Accepts a bare origin (`https://x.ngrok-free.dev`) — appending the\n * standard `/mcp` path — or a full MCP URL already ending in `/mcp` or the\n * legacy `/_agent-native/mcp` path.\n */\nfunction resolveMcpUrlOverride(input: string): { url: string; mcpUrl: string } {\n let parsed: URL;\n try {\n parsed = new URL(input);\n } catch {\n throw new Error(`--mcp-url must be a valid URL (got \"${input}\").`);\n }\n if (parsed.protocol !== \"http:\" && parsed.protocol !== \"https:\") {\n throw new Error(\"--mcp-url must use http:// or https://.\");\n }\n const origin = parsed.origin;\n const trimmedPath = parsed.pathname.replace(/\\/+$/, \"\");\n const mcpSuffix = [MCP_LEGACY_ROUTE_PREFIX, MCP_PUBLIC_ROUTE_PREFIX].find(\n (suffix) => trimmedPath === suffix || trimmedPath.endsWith(suffix),\n );\n const mcpUrl = mcpSuffix\n ? `${origin}${trimmedPath.slice(0, -mcpSuffix.length)}${MCP_PUBLIC_ROUTE_PREFIX}`\n : `${origin}${MCP_PUBLIC_ROUTE_PREFIX}`;\n return { url: origin, mcpUrl };\n}\n\n/** Return a copy of the install target with its hosted MCP URL overridden. */\nfunction withMcpUrlOverride(\n target: SkillInstallTarget,\n input: string,\n): SkillInstallTarget {\n const { url, mcpUrl } = resolveMcpUrlOverride(input);\n return {\n ...target,\n loaded: {\n ...target.loaded,\n manifest: { ...target.loaded.manifest, hosted: { url, mcpUrl } },\n },\n };\n}\n\nfunction isPlainSkillRepoPath(target: string): boolean {\n const resolved = path.resolve(target);\n if (!fs.existsSync(resolved)) return false;\n const stat = fs.statSync(resolved);\n if (!stat.isDirectory()) return false;\n const hasDirectSkill = fs.existsSync(path.join(resolved, \"SKILL.md\"));\n const skillsDir = path.join(resolved, \"skills\");\n const hasSkillsDir =\n fs.existsSync(skillsDir) &&\n fs\n .readdirSync(skillsDir, { withFileTypes: true })\n .some(\n (entry) =>\n entry.isDirectory() &&\n fs.existsSync(path.join(skillsDir, entry.name, \"SKILL.md\")),\n );\n const hasAppSkillManifest = fs.existsSync(\n path.join(resolved, \"agent-native.app-skill.json\"),\n );\n return !hasAppSkillManifest && (hasDirectSkill || hasSkillsDir);\n}\n\nfunction isGithubSkillRepoTarget(target: string): boolean {\n if (/^[A-Za-z0-9_.-]+\\/[A-Za-z0-9_.-]+(?:#.+)?$/.test(target)) {\n return true;\n }\n try {\n const url = new URL(target);\n return url.hostname === \"github.com\";\n } catch {\n return false;\n }\n}\n\nfunction isPlainSkillRepoTarget(target: string): boolean {\n return isPlainSkillRepoPath(target) || isGithubSkillRepoTarget(target);\n}\n\nfunction agentNativeSkillsInstallArgs(\n parsed: ParsedSkillsArgs,\n target: string,\n clients: SkillInstructionClientId[],\n baseDir: string | undefined,\n): string[] {\n const args = [\n \"--yes\",\n \"@agent-native/skills@latest\",\n \"add\",\n \"--quiet\",\n \"--copy\",\n target,\n \"--client\",\n clientArgForClients(clients),\n \"--scope\",\n parsed.scope,\n ];\n if (baseDir) args.push(\"--cwd\", baseDir);\n if (parsed.withGithubAction) args.push(\"--with-github-action\");\n if (parsed.force) args.push(\"--force\");\n const forwardsPlanFlags = shouldForwardPlanModeFlag(\n target,\n parsed.plainSkillNames,\n );\n if (forwardsPlanFlags && parsed.planMode)\n args.push(\"--mode\", parsed.planMode);\n if (forwardsPlanFlags && parsed.mcpUrl) args.push(\"--mcp-url\", parsed.mcpUrl);\n if (!parsed.mcp) args.push(\"--no-mcp\");\n if (!parsed.connect) args.push(\"--no-connect\");\n for (const skill of parsed.plainSkillNames ?? []) {\n args.push(\"--skill\", skill);\n }\n if (parsed.updateInstructions === true) args.push(\"--update-instructions\");\n if (parsed.updateInstructions === false)\n args.push(\"--no-update-instructions\");\n if (parsed.yes) args.push(\"--yes\");\n if (parsed.dryRun) args.push(\"--dry-run\");\n return args;\n}\n\nasync function addPlainSkillRepo(\n parsed: ParsedSkillsArgs,\n options: RunSkillsOptions,\n): Promise<SkillsAddResult> {\n const target = parsed.target!;\n if (!parsed.instructions && parsed.mcp) {\n throw new Error(\n \"Plain skill repositories only install skill instructions. Run without --mcp-only.\",\n );\n }\n if (parsed.mcpUrl && !installModeSkillNamesSelected(parsed.plainSkillNames)) {\n throw new Error(\n \"--mcp-url only applies to app-backed Agent Native skills.\",\n );\n }\n\n const clients = parsed.clients ?? resolveSkillsClientArg(parsed.client);\n const skillsAgents = skillsAgentsForClients(clients);\n const selectedSkillNames = parsed.plainSkillNames ?? [];\n if (skillsAgents.length === 0) {\n throw new Error(\n \"Plain skill repositories install through shared .agents for Codex, Pi, Cursor, OpenCode, Copilot, and similar agents, or Claude Code's native files.\",\n );\n }\n const args = agentNativeSkillsInstallArgs(\n parsed,\n target,\n skillsAgents,\n options.baseDir,\n );\n if (!parsed.dryRun) {\n const code = await (options.runCommand ?? runCommand)(\"npx\", args, {\n stdio: \"silent\",\n });\n if (code !== 0)\n throw new Error(\n `npx @agent-native/skills@latest add exited with ${code}.`,\n );\n }\n options.telemetry?.track(\"skills_cli install completed\", {\n skills: selectedSkillNames.length ? selectedSkillNames.join(\",\") : target,\n clients: clients.join(\",\"),\n scope: parsed.scope,\n dryRun: Boolean(parsed.dryRun),\n });\n return {\n id: target,\n displayName: selectedSkillNames.length\n ? selectedSkillNames.join(\", \")\n : target,\n skillNames: selectedSkillNames,\n skillsAgents,\n mcpUrl: \"\",\n mcpClients: [],\n dryRun: parsed.dryRun,\n commands: [commandString(\"npx\", args)],\n local: true,\n };\n}\n\n/**\n * Whether we can run the interactive browser/device auth flow. CI and\n * non-TTY shells must not block on a browser approval, so we skip the inline\n * flow there and surface the exact `agent-native connect` command instead.\n */\nfunction canRunInteractiveConnect(options: RunSkillsOptions): boolean {\n if (options.isInteractive) return options.isInteractive();\n if (process.env.AGENT_NATIVE_NO_PROMPT === \"1\") return false;\n if (process.env.CI === \"true\") return false;\n return !!process.stdin.isTTY && !!process.stdout.isTTY;\n}\n\nfunction normalizeConnectLogMessage(message: string): string {\n return message\n .split(\"\\n\")\n .map((line) => (line.startsWith(\" \") ? line.slice(2) : line))\n .join(\"\\n\");\n}\n\nfunction createClackConnectLog(\n clack: typeof import(\"@clack/prompts\"),\n): (message: string) => void {\n return (message) => {\n clack.log.message(normalizeConnectLogMessage(message), {\n symbol: clack.S_BAR,\n secondarySymbol: clack.S_BAR,\n spacing: 0,\n });\n };\n}\n\nasync function runWithConnectSpinner<T>(\n options: RunSkillsOptions,\n message: string,\n task: () => T | Promise<T>,\n): Promise<T> {\n const spinner = options.createConnectSpinner?.();\n if (!spinner) return await task();\n spinner.start(message);\n try {\n return await task();\n } finally {\n spinner.clear();\n }\n}\n\n/** Build the `npx @agent-native/core@latest connect <url> --client … --scope …` command. */\nfunction connectCommandFor(\n hostedUrl: string,\n clients: ClientId[],\n scope: string,\n): string {\n const args = [\n \"@agent-native/core@latest\",\n \"connect\",\n hostedUrl,\n \"--client\",\n clientArgForClients(clients),\n \"--scope\",\n scope,\n ];\n return commandString(\"npx\", args);\n}\n\n/**\n * Authenticate the freshly-registered hosted MCP connector so the user does not\n * hit the OAuth wall on their first tool call. Reuses the existing\n * `agent-native connect` flow (OAuth-capable clients get URL-only config plus a\n * `/mcp` authenticate prompt; Codex / Cowork run the browser device-code flow).\n * In non-interactive shells we skip the inline flow and return the command to\n * run instead. Failures here are non-fatal: the connector is already registered,\n * so the user can authenticate later.\n */\nasync function connectAfterEnsure(\n installTarget: SkillInstallTarget,\n clients: ClientId[],\n parsed: ParsedSkillsArgs,\n options: RunSkillsOptions,\n): Promise<{ connected: boolean; connectCommand: string }> {\n const hostedUrl = installTarget.loaded.manifest.hosted.url;\n const authMode = installTarget.loaded.manifest.auth?.mode ?? \"oauth\";\n const connectCommand = connectCommandFor(hostedUrl, clients, parsed.scope);\n\n // Skills whose connector needs no auth (e.g. open/local-only) never need the\n // connect step.\n if (authMode === \"none\") {\n return { connected: false, connectCommand: \"\" };\n }\n\n if (!canRunInteractiveConnect(options)) {\n options.log?.(\n `Authentication skipped (non-interactive). To finish auth, run: ${connectCommand}`,\n );\n return { connected: false, connectCommand };\n }\n\n const authMessage = `Authenticating ${installTarget.displayName}…`;\n const connectLog = options.connectLog ?? options.log;\n const spinner = options.createConnectSpinner?.();\n let spinnerActive = false;\n let wroteAuthMessage = false;\n const clearSpinner = () => {\n if (!spinnerActive) return;\n spinner.clear();\n spinnerActive = false;\n };\n const writeAuthMessage = () => {\n if (wroteAuthMessage) return;\n connectLog?.(authMessage);\n wroteAuthMessage = true;\n };\n const writeConnectLog = (message: string) => {\n clearSpinner();\n writeAuthMessage();\n connectLog?.(message);\n };\n if (spinner) {\n spinner.start(authMessage);\n spinnerActive = true;\n } else {\n writeAuthMessage();\n }\n options.telemetry?.track(\"skills_cli connect started\");\n try {\n const connectArgs = [\n hostedUrl,\n \"--client\",\n clientArgForClients(clients),\n \"--scope\",\n parsed.scope,\n ];\n if (options.runConnect) {\n await options.runConnect(connectArgs);\n } else {\n await runConnect(connectArgs, {\n isInteractive: options.isInteractive,\n logOut: writeConnectLog,\n logErr: writeConnectLog,\n withBrowserOpenSpinner: (message, openBrowser) =>\n runWithConnectSpinner(options, message, openBrowser),\n });\n }\n clearSpinner();\n writeAuthMessage();\n options.telemetry?.track(\"skills_cli connect completed\");\n return { connected: true, connectCommand: \"\" };\n } catch (err: any) {\n clearSpinner();\n writeAuthMessage();\n // Non-fatal: the MCP connector is registered. Surface the manual command.\n options.telemetry?.track(\"skills_cli connect failed\", {\n error: err?.message ?? String(err),\n });\n connectLog?.(\n `Could not finish authentication automatically (${err?.message ?? err}). ` +\n `Run it later with: ${connectCommand}`,\n );\n return { connected: false, connectCommand };\n }\n}\n\nexport async function addAgentNativeSkill(\n parsed: ParsedSkillsArgs,\n options: RunSkillsOptions = {},\n): Promise<SkillsAddResult> {\n const target = parsed.target ?? \"assets\";\n const publicSelection = publicSkillSelectionNames(target);\n if (publicSelection) {\n return addPlainSkillRepo(\n {\n ...parsed,\n target: options.publicSkillSource ?? DEFAULT_PUBLIC_SKILLS_SOURCE,\n plainSkillNames: publicSelection,\n },\n options,\n );\n }\n const knownTarget = normalizeKnownSkillTarget(target);\n // For multi-skill bundles (the plan bundle), a single-skill target installs\n // only that skill. `installsRecap` controls the PR Visual Recap github-action\n // offer, which is only relevant when the recap skill is part of the install.\n const onlySkillNames = knownTarget\n ? builtInOnlySkillNames(target)\n : undefined;\n const installsRecap =\n knownTarget === \"visual-plans\" &&\n (!onlySkillNames || onlySkillNames.includes(\"visual-recap\"));\n if (!knownTarget && isPlainSkillRepoTarget(target)) {\n return addPlainSkillRepo({ ...parsed, target }, options);\n }\n if (!knownTarget && !fs.existsSync(path.resolve(target))) {\n throw new Error(\n `Unknown skill or manifest path: ${target}. Run \"npx @agent-native/core@latest skills list\".`,\n );\n }\n const knownBuiltIn = knownTarget ? BUILT_IN_APP_SKILLS[knownTarget] : null;\n const installsScreenMemoryMcp = isScreenMemoryMcpBuiltInSkill(knownBuiltIn);\n const baseDir = options.baseDir ?? process.cwd();\n if (installsScreenMemoryMcp && parsed.mcpUrl) {\n throw new Error(\n \"Rewind uses the local Clips Screen Memory MCP and does not accept --mcp-url.\",\n );\n }\n if (isLocalOnlyBuiltInSkill(knownBuiltIn)) {\n if (parsed.planMode) {\n throw new Error(\n \"--mode only applies to visual-plan / visual-recap / visualize-repo / content.\",\n );\n }\n if (parsed.mcpUrl) {\n throw new Error(\n \"Context X-Ray is installed locally and does not use --mcp-url yet.\",\n );\n }\n if (!parsed.instructions && parsed.mcp) {\n throw new Error(\n \"Context X-Ray does not need MCP config yet. Run without --mcp-only.\",\n );\n }\n const clients = (\n parsed.clients ?? resolveSkillsClientArg(parsed.client)\n ).filter(isMcpClientId);\n const skillsAgents = skillsAgentsForClients(clients);\n if (parsed.dryRun) {\n const githubActionPath =\n parsed.withGithubAction && knownTarget === \"visual-plans\"\n ? prVisualRecapWorkflowDisplayPath()\n : undefined;\n options.telemetry?.track(\"skills_cli install completed\", {\n skills: knownBuiltIn.skillName,\n clients: clients.join(\",\"),\n scope: parsed.scope,\n dryRun: true,\n });\n return {\n id: knownBuiltIn.manifest.id,\n displayName: knownBuiltIn.manifest.displayName,\n skillNames: [knownBuiltIn.skillName],\n skillsAgents,\n mcpUrl: \"\",\n mcpClients: [],\n dryRun: true,\n local: true,\n commands: [dryRunInstallCommand(parsed, target)],\n githubActionPath,\n };\n }\n const localInstall = installLocalContextXray({\n baseDir,\n clients,\n scope: parsed.scope,\n });\n options.telemetry?.track(\"skills_cli install completed\", {\n skills: knownBuiltIn.skillName,\n clients: clients.join(\",\"),\n scope: parsed.scope,\n dryRun: false,\n });\n return {\n id: knownBuiltIn.manifest.id,\n displayName: knownBuiltIn.manifest.displayName,\n instructionSource: localInstall.scriptPath,\n skillNames: [knownBuiltIn.skillName],\n skillsAgents,\n mcpUrl: \"\",\n mcpClients: [],\n dryRun: false,\n local: true,\n scriptPath: localInstall.scriptPath,\n written: localInstall.written,\n commands: localInstall.commands,\n };\n }\n let installTarget = loadSkillTarget(target, onlySkillNames);\n const modeAwareTargetId = installTarget.modeAwareId;\n const planMode = modeAwareTargetId\n ? (parsed.planMode ??\n (parsed.mcpUrl\n ? \"self-hosted\"\n : modeAwareTargetId === \"visual-plans\"\n ? \"hosted\"\n : undefined))\n : undefined;\n if (parsed.planMode && !modeAwareTargetId) {\n throw new Error(\n \"--mode only applies to visual-plan / visual-recap / visualize-repo / content.\",\n );\n }\n if (planMode === \"local-files\" && parsed.mcpUrl) {\n throw new Error(\"--mode local-files cannot be combined with --mcp-url.\");\n }\n if (planMode === \"self-hosted\" && !parsed.mcpUrl) {\n throw new Error(\"--mode self-hosted requires --mcp-url <url>.\");\n }\n const shouldRegisterMcp =\n parsed.mcp && !localFilesModeSkipsMcp(modeAwareTargetId, planMode);\n if (parsed.mcpUrl) {\n installTarget = withMcpUrlOverride(installTarget, parsed.mcpUrl);\n }\n const clients =\n parsed.clients ?? resolveSkillsClientArg(parsed.client, shouldRegisterMcp);\n const mcpClients = clients.filter(isMcpClientId);\n if (shouldRegisterMcp && mcpClients.length === 0) {\n throw new Error(\n \"MCP setup supports Claude Code, Codex, Claude Cowork, Cursor, OpenCode, or GitHub Copilot / VS Code clients. Use --mode local-files or --no-mcp for Pi.\",\n );\n }\n installTarget = preserveMcpUrlAppPathOverride(installTarget, parsed.mcpUrl);\n const skillsAgents = installsScreenMemoryMcp\n ? clients\n : skillsAgentsForClients(clients);\n if (parsed.dryRun) {\n try {\n const localManifestPath = shouldWriteContentLocalFilesManifest(\n modeAwareTargetId,\n planMode,\n )\n ? contentLocalFilesManifestPath(baseDir)\n : undefined;\n const githubActionPath =\n parsed.withGithubAction && installsRecap\n ? prVisualRecapWorkflowDisplayPath()\n : undefined;\n const githubActionSuggestedCommand =\n installsRecap && !parsed.withGithubAction\n ? prVisualRecapInstallCommand()\n : undefined;\n options.telemetry?.track(\"skills_cli install completed\", {\n skills: installTarget.skillNames.join(\",\"),\n clients: clients.join(\",\"),\n scope: parsed.scope,\n dryRun: true,\n });\n return {\n id: installTarget.id,\n displayName: installTarget.displayName,\n skillNames: installTarget.skillNames,\n skillsAgents,\n mcpUrl: installsScreenMemoryMcp\n ? \"\"\n : localFilesModeSkipsMcp(modeAwareTargetId, planMode)\n ? \"\"\n : installTarget.loaded.manifest.hosted.mcpUrl,\n mcpClients: shouldRegisterMcp ? mcpClients : [],\n dryRun: true,\n commands: [\n dryRunInstallCommand(parsed, target, { modeAwareTargetId }),\n ...(localManifestPath ? [`write ${localManifestPath}`] : []),\n ],\n githubActionPath,\n githubActionSuggestedCommand,\n planMode,\n localManifestPath,\n };\n } finally {\n installTarget.cleanup?.();\n }\n }\n const commands: string[] = [];\n const tmpRoot = fs.mkdtempSync(path.join(os.tmpdir(), \"an-skills-add-\"));\n let instructionSource: string | undefined;\n let instructionsWritten: string[] | undefined;\n let connected = false;\n let connectCommand: string | undefined;\n let registeredMcpClients: ClientId[] = shouldRegisterMcp ? mcpClients : [];\n let localManifestPath: string | undefined;\n\n try {\n if (parsed.instructions) {\n if (skillsAgents.length === 0) {\n if (!shouldRegisterMcp) {\n throw new Error(\n \"Skill instructions use shared .agents for Codex, Pi, Cursor, OpenCode, Copilot, and similar agents, or Claude Code's native files. Use an MCP-capable client or omit --instructions-only.\",\n );\n }\n } else if (knownTarget) {\n // Built-in skills ship their instructions inside this package, so copy\n // the skill folders straight into each client's skills directory. This\n // avoids shelling out to the separate @agent-native/skills installer\n // (which would need to be published to npm to run via npx).\n instructionsWritten = installBuiltInInstructions({\n appSkillId: knownTarget,\n onlySkillNames,\n skillsAgents,\n scope: parsed.scope as \"project\" | \"user\",\n baseDir,\n dryRun: parsed.dryRun,\n planMode,\n mcpUrl: installTarget.loaded.manifest.hosted.mcpUrl,\n });\n instructionSource = instructionsWritten[0];\n commands.push(...instructionsWritten.map((dir) => `write ${dir}`));\n } else {\n // External app-skill manifests / plain skill repos still go through the\n // standalone installer, which knows how to pack adapters and fetch\n // remote skill collections.\n instructionSource = installTarget.materializeInstructions(tmpRoot);\n const args = [\n \"--yes\",\n \"@agent-native/skills@latest\",\n \"add\",\n \"--quiet\",\n instructionSource,\n \"--copy\",\n ...installTarget.skillNames.flatMap((skill) => [\"--skill\", skill]),\n ...skillsAgents.flatMap((agent) => [\"-a\", agent]),\n ...(parsed.scope === \"user\" ? [\"-g\"] : []),\n ...(modeAwareTargetId && parsed.planMode\n ? [\"--mode\", parsed.planMode]\n : []),\n ...(modeAwareTargetId && parsed.mcpUrl\n ? [\"--mcp-url\", parsed.mcpUrl]\n : []),\n ...(parsed.yes || knownTarget ? [\"-y\"] : []),\n ];\n commands.push(commandString(\"npx\", args));\n if (!parsed.dryRun) {\n const code = await (options.runCommand ?? runCommand)(\"npx\", args, {\n stdio: \"silent\",\n });\n if (code !== 0)\n throw new Error(\n `npx @agent-native/skills@latest add exited with ${code}.`,\n );\n }\n }\n }\n\n if (shouldWriteContentLocalFilesManifest(modeAwareTargetId, planMode)) {\n localManifestPath = writeContentLocalFilesManifest(baseDir);\n commands.push(`write ${localManifestPath}`);\n }\n\n // Skill instructions are now on disk (built-in folders copied or external\n // pack materialized) — record the install before MCP registration/connect.\n options.telemetry?.track(\"skills_cli install completed\", {\n skills: installTarget.skillNames.join(\",\"),\n clients: clients.join(\",\"),\n scope: parsed.scope,\n dryRun: Boolean(parsed.dryRun),\n });\n\n if (shouldRegisterMcp && installsScreenMemoryMcp) {\n const screenMemoryDir = resolveScreenMemoryStoreDir();\n if (!screenMemoryDir) {\n throw new Error(\n \"No local Clips Screen Memory store was found. Turn Rewind on in Clips, then run the setup again.\",\n );\n }\n registeredMcpClients = mcpClients.map((client) => {\n commands.push(\n `npx @agent-native/core@latest mcp install-screen-memory --client ${client} --scope ${parsed.scope}`,\n );\n installScreenMemoryForClient(\n client,\n screenMemoryDir,\n baseDir,\n parsed.scope,\n );\n return client;\n });\n options.telemetry?.track(\"skills_cli mcp registered\", {\n skills: installTarget.skillNames.join(\",\"),\n });\n } else if (shouldRegisterMcp) {\n commands.push(\n `npx @agent-native/core@latest app-skill ensure --manifest ${installTarget.loaded.file} --client ${parsed.client} --scope ${parsed.scope} --yes`,\n );\n if (!parsed.dryRun) {\n const ensureResult = await ensureAppSkill(installTarget.loaded, {\n clients: mcpClients,\n scope: parsed.scope,\n baseDir: options.baseDir,\n yes: parsed.yes || Boolean(knownTarget),\n confirm: true,\n log: options.log,\n });\n registeredMcpClients = ensureResult.written.map(\n (written) => written.client,\n );\n options.telemetry?.track(\"skills_cli mcp registered\", {\n skills: installTarget.skillNames.join(\",\"),\n });\n\n // One-step install + authenticate: after registering a hosted MCP\n // connector, kick off the existing connect/device-code flow so the user\n // does not hit an OAuth wall on the first tool call. `--no-connect`\n // opts out; non-interactive shells get the exact command to run.\n if (parsed.connect) {\n const result = await connectAfterEnsure(\n installTarget,\n mcpClients,\n parsed,\n options,\n );\n connected = result.connected;\n connectCommand = result.connectCommand || undefined;\n if (connected) registeredMcpClients = mcpClients;\n if (connectCommand) commands.push(connectCommand);\n } else {\n const pendingClients = mcpClients.filter(\n (client) => !registeredMcpClients.includes(client),\n );\n if (pendingClients.length > 0) {\n connectCommand = connectCommandFor(\n installTarget.loaded.manifest.hosted.url,\n pendingClients,\n parsed.scope,\n );\n commands.push(connectCommand);\n }\n }\n }\n }\n\n // `--with-github-action`: also drop the PR Visual Recap workflow into the\n // repo so PRs get automatic recaps. Only meaningful for the plan family.\n let withGithubAction = Boolean(parsed.withGithubAction);\n let githubActionPath: string | undefined;\n let githubActionExisted: boolean | undefined;\n let githubActionSuggestedCommand: string | undefined;\n if (\n installsRecap &&\n !withGithubAction &&\n !fs.existsSync(prVisualRecapWorkflowPath(baseDir))\n ) {\n // Normally the recap decision is made up front in `runSkills` (so it's\n // resolved here). Only prompt inline when a direct caller invoked\n // addAgentNativeSkill without going through that up-front step.\n if (!parsed.githubActionResolved && shouldPrompt(parsed, options)) {\n const prompt = options.promptGithubAction ?? promptForGithubAction;\n const choice = await prompt({\n workflowPath: prVisualRecapWorkflowDisplayPath(),\n setupCommand: prVisualRecapSetupCommand(),\n docsUrl: PR_VISUAL_RECAP_DOCS_URL,\n });\n if (choice === null) {\n options.telemetry?.track(\"skills_cli cancelled\", {\n step: \"github-action\",\n });\n }\n withGithubAction = choice === true;\n }\n if (!withGithubAction) {\n githubActionSuggestedCommand = prVisualRecapInstallCommand();\n }\n }\n\n if (withGithubAction) {\n if (!installsRecap) {\n options.log?.(\n \"--with-github-action only applies to the visual-recap skill; skipping the workflow.\",\n );\n } else {\n const writeResult = writePrVisualRecapWorkflow(baseDir, {\n force: Boolean(parsed.force),\n });\n if (writeResult.status === \"refused\") {\n throw new Error(`recap workflow: ${writeResult.message}`);\n }\n githubActionPath = writeResult.path;\n githubActionExisted =\n writeResult.status === \"written\" ? writeResult.existed : false;\n commands.push(`write ${writeResult.path}`);\n options.telemetry?.track(\"skills_cli github action added\");\n }\n }\n\n return {\n id: installTarget.id,\n displayName: installTarget.displayName,\n instructionSource,\n skillNames: installTarget.skillNames,\n skillsAgents,\n mcpUrl: installsScreenMemoryMcp\n ? \"\"\n : localFilesModeSkipsMcp(modeAwareTargetId, planMode)\n ? \"\"\n : installTarget.loaded.manifest.hosted.mcpUrl,\n mcpClients: registeredMcpClients,\n dryRun: parsed.dryRun,\n commands,\n written: instructionsWritten,\n connected,\n connectCommand,\n planMode,\n localManifestPath,\n githubActionPath,\n githubActionExisted,\n githubActionSuggestedCommand,\n };\n } finally {\n fs.rmSync(tmpRoot, { recursive: true, force: true });\n installTarget.cleanup?.();\n }\n}\n\nfunction listSkills(options: RunSkillsOptions = {}) {\n const hidden = hiddenBuiltInSkillTargets(options);\n return [\n ...Object.values(BUILT_IN_APP_SKILLS)\n .filter((entry) => !hidden.has(entry.skillName))\n .map((entry) => ({\n id: entry.manifest.id,\n aliases:\n BUILT_IN_APP_SKILL_DISPLAY_ALIASES[\n entry.manifest.id as BuiltInAppSkillId\n ] ?? [],\n name: entry.manifest.displayName,\n description: entry.manifest.description,\n mcpUrl:\n isLocalOnlyBuiltInSkill(entry) || isScreenMemoryMcpBuiltInSkill(entry)\n ? \"\"\n : entry.manifest.hosted.mcpUrl,\n local:\n isLocalOnlyBuiltInSkill(entry) ||\n isScreenMemoryMcpBuiltInSkill(entry),\n source: \"agent-native\",\n })),\n ...publicSkillEntries(options).map((entry) => ({\n id: entry.name,\n aliases: [] as string[],\n name: entry.name,\n description:\n entry.description ?? \"Public skill from the BuilderIO skills catalog.\",\n mcpUrl: \"\",\n local: true,\n source: options.publicSkillSource ?? DEFAULT_PUBLIC_SKILLS_SOURCE,\n })),\n ];\n}\n\nfunction skillStateJson(state: SkillInstallState) {\n return {\n appSkillId: state.appSkillId,\n displayName: state.displayName,\n skillName: state.skillName,\n path: state.path,\n scope: state.scope,\n client: state.client,\n status: state.current ? \"current\" : \"stale\",\n managed: state.managed,\n installedHash: state.installedHash,\n latestHash: state.latestHash,\n metadataHash: state.metadataHash,\n planMode: state.planMode,\n };\n}\n\nfunction formatSkillState(state: SkillInstallState): string {\n const status = state.current ? \"current\" : \"stale\";\n const managed = state.managed ? \"managed\" : \"unmarked\";\n const hashes =\n state.installedHash && !state.current\n ? ` (${state.installedHash} -> ${state.latestHash})`\n : \"\";\n return `${state.skillName.padEnd(22)} ${status.padEnd(7)} ${state.scope}/${state.client} ${managed}${hashes}\\n ${state.path}`;\n}\n\nfunction scaffoldStateJson(state: ScaffoldGuidanceState) {\n return {\n kind: state.kind,\n displayName: state.displayName,\n templateName: state.templateName,\n path: state.path,\n sourcePath: state.sourcePath,\n projectRoot: state.projectRoot,\n workspaceRoot: state.workspaceRoot,\n sharedPackageDir: state.sharedPackageDir,\n skillCount: state.skillCount,\n status: state.current ? \"current\" : \"stale\",\n managed: true,\n };\n}\n\nfunction formatScaffoldState(state: ScaffoldGuidanceState): string {\n const status = state.current ? \"current\" : \"stale\";\n return `${\"scaffold\".padEnd(22)} ${status.padEnd(7)} project/${state.kind} managed (${state.skillCount} skills)\\n ${state.path}`;\n}\n\nfunction planModeSummary(mode: PlanInstallMode): string {\n if (mode === \"local-files\")\n return \"Local files - no hosted writes by default\";\n if (mode === \"self-hosted\") return \"Self-hosted/custom app\";\n return \"Hosted app\";\n}\n\nfunction skillInstructionAgentLabel(agent: string): string {\n if (agent === \"codex\") return SKILL_INSTRUCTION_CLIENT_LABELS.codex;\n if (agent === \"claude-code\")\n return SKILL_INSTRUCTION_CLIENT_LABELS[\"claude-code\"];\n if (agent === \"pi\") return SKILL_INSTRUCTION_CLIENT_LABELS.pi;\n return agent;\n}\n\nfunction targetInstallsMcp(\n target: string,\n parsed: Pick<ParsedSkillsArgs, \"mcp\" | \"planMode\">,\n): boolean {\n if (!parsed.mcp) return false;\n if (publicSkillSelectionNames(target)) return false;\n const knownTarget = normalizeKnownSkillTarget(target);\n if (localFilesModeSkipsMcp(knownTarget, parsed.planMode)) return false;\n if (knownTarget) {\n return !isLocalOnlyBuiltInSkill(BUILT_IN_APP_SKILLS[knownTarget]);\n }\n return true;\n}\n\nfunction targetsInstallMcp(\n targets: string[],\n parsed: ParsedSkillsArgs,\n): boolean {\n return targets.some((target) => targetInstallsMcp(target, parsed));\n}\n\nfunction instructionContentForSkill(skillName: string): string | null {\n if (skillName === \"quick-recap\") {\n return \"When writing final response status indicators, use the /quick-recap skill always.\";\n }\n if (skillName === \"efficient-fable\") {\n return \"When operating as Claude Fable, use the /efficient-fable skill always.\";\n }\n if (skillName === \"efficient-frontier\") {\n return \"When using a high-cost frontier model for codebase-heavy work, use the /efficient-frontier skill always.\";\n }\n if (skillName === \"stay-within-limits\") {\n return \"When long-running or parallel work needs usage-limit checks, use the /stay-within-limits skill always.\";\n }\n if (skillName === \"visual-plan\") {\n return \"When work needs an interactive visual plan before implementation, use the /visual-plan skill always.\";\n }\n if (skillName === \"visual-recap\") {\n return \"When a PR, branch, commit, or diff needs an interactive visual recap, use the /visual-recap skill always.\";\n }\n if (skillName === \"visualize-repo\") {\n return \"When a repository needs local visual docs or a navigable Plan-backed repo viewer, use the /visualize-repo skill always.\";\n }\n return null;\n}\n\nfunction selectedPlainSkillNamesForInstructionPrompt(\n targets: string[],\n parsed: ParsedSkillsArgs,\n): string[] {\n const names = new Set<string>(parsed.plainSkillNames ?? []);\n for (const target of targets) {\n for (const name of publicSkillSelectionNames(target) ?? []) {\n names.add(name);\n }\n }\n return [...names];\n}\n\nfunction hasManagedInstructionBlock(skillNames: string[]): boolean {\n return skillNames.some((name) => Boolean(instructionContentForSkill(name)));\n}\n\nfunction runSkillsStatusOrUpdate(\n parsed: ParsedSkillsArgs,\n options: RunSkillsOptions,\n update: boolean,\n): void {\n const skillBefore = collectSkillInstallStates(parsed, options);\n const scaffoldBefore = collectScaffoldGuidanceStates(parsed, options);\n const skillChanged = update\n ? updateSkillInstallStates(skillBefore, parsed.dryRun)\n : [];\n const scaffoldChanged = update\n ? updateScaffoldGuidanceStates(scaffoldBefore, parsed.dryRun)\n : [];\n if (update && !parsed.dryRun && scaffoldChanged.length > 0) {\n repairScaffoldAgentLinks(scaffoldChanged);\n }\n const skillAfter =\n update && !parsed.dryRun\n ? collectSkillInstallStates(parsed, options)\n : skillBefore;\n const scaffoldAfter =\n update && !parsed.dryRun\n ? collectScaffoldGuidanceStates(parsed, options)\n : scaffoldBefore;\n const beforeCount = skillBefore.length + scaffoldBefore.length;\n const changedCount = skillChanged.length + scaffoldChanged.length;\n\n if (parsed.printJson) {\n const outputSkillStates =\n update && !parsed.dryRun ? skillAfter : skillBefore;\n const outputScaffoldStates =\n update && !parsed.dryRun ? scaffoldAfter : scaffoldBefore;\n process.stdout.write(\n `${JSON.stringify(\n {\n ok: true,\n command: parsed.command,\n dryRun: parsed.dryRun,\n found: beforeCount,\n stale:\n outputSkillStates.filter((state) => !state.current).length +\n outputScaffoldStates.filter((state) => !state.current).length,\n updated: changedCount,\n skills: outputSkillStates.map(skillStateJson),\n scaffold: outputScaffoldStates.map(scaffoldStateJson),\n },\n null,\n 2,\n )}\\n`,\n );\n return;\n }\n\n if (beforeCount === 0) {\n const target = parsed.target ? ` for ${parsed.target}` : \"\";\n const hint = isScaffoldGuidanceTarget(parsed.target)\n ? `Run this from a generated Agent Native app or workspace root.\\n`\n : update\n ? `The update command only refreshes skill folders that already exist; it does not do first-time install, MCP registration, or auth. Run \"npx @agent-native/core@latest skills add ${parsed.target ?? \"visual-plan\"}\" for one-step setup.\\n`\n : `Run \"npx @agent-native/core@latest skills add ${parsed.target ?? \"visual-plan\"}\" to install one.\\n`;\n process.stdout.write(\n `No installed Agent Native skill copies found${target}.\\n${hint}`,\n );\n return;\n }\n\n if (update) {\n if (parsed.dryRun) {\n process.stdout.write(\n changedCount\n ? `Would update ${changedCount} skill folder${changedCount === 1 ? \"\" : \"s\"}:\\n`\n : \"All discovered skill folders are already current.\\n\",\n );\n } else {\n process.stdout.write(\n changedCount\n ? `Updated ${changedCount} skill folder${changedCount === 1 ? \"\" : \"s\"}.\\n`\n : \"All discovered skill folders are already current.\\n\",\n );\n }\n }\n\n const rows = [\n ...(update && parsed.dryRun ? skillBefore : skillAfter).map(\n formatSkillState,\n ),\n ...(update && parsed.dryRun ? scaffoldBefore : scaffoldAfter).map(\n formatScaffoldState,\n ),\n ];\n process.stdout.write(`${rows.join(\"\\n\")}\\n`);\n}\n\n/**\n * Resolve the CLI version the same way `index.ts` does — read it from the\n * package.json two levels up from the compiled module (dist/cli/skills.js →\n * ../../package.json). Best-effort: falls back to \"unknown\".\n */\nfunction readCliVersion(): string {\n try {\n const here = path.dirname(fileURLToPath(import.meta.url));\n const pkg = JSON.parse(\n fs.readFileSync(path.resolve(here, \"../../package.json\"), \"utf8\"),\n ) as { version?: unknown };\n return typeof pkg.version === \"string\" ? pkg.version : \"unknown\";\n } catch {\n return \"unknown\";\n }\n}\n\nexport async function runSkills(\n argv: string[],\n options: RunSkillsOptions = {},\n): Promise<void> {\n const parsed = parseSkillsArgs(argv);\n if (parsed.baseDir) {\n options = { ...options, baseDir: path.resolve(parsed.baseDir) };\n }\n const clackForLog = parsed.printJson\n ? undefined\n : await import(\"@clack/prompts\");\n const log = parsed.printJson\n ? undefined\n : (message: string) => {\n if (!message.trim()) return;\n clackForLog?.log.info(message);\n };\n const connectLog =\n !parsed.printJson && clackForLog\n ? createClackConnectLog(clackForLog)\n : undefined;\n const createConnectSpinner =\n !parsed.printJson && clackForLog && process.stdout.isTTY\n ? () => clackForLog.spinner({ indicator: \"timer\" })\n : undefined;\n\n if (parsed.command === \"help\") {\n process.stdout.write(`${HELP}\\n`);\n return;\n }\n\n // `@agent-native/skills` now delegates its interactive install to this\n // function. For plain skill repos we still shell out to\n // `npx @agent-native/skills@latest add …`; this env guard tells that child process\n // to run its OWN headless installer instead of bouncing back into core,\n // which would otherwise be an infinite skills → core → skills loop.\n const previousDirect = process.env.AGENT_NATIVE_SKILLS_DIRECT;\n process.env.AGENT_NATIVE_SKILLS_DIRECT = \"1\";\n\n // Best-effort install-funnel telemetry. Created once per run and flushed in a\n // finally so events send on success, error, and cancellation — the CLI is\n // short-lived, so flushing before exit is essential or the events never send.\n const startedAt = Date.now();\n const telemetry =\n options.telemetry ??\n createCliTelemetry({\n cli: \"core\",\n cliVersion: readCliVersion(),\n command: parsed.command,\n interactive: shouldPrompt(parsed, options),\n });\n const optionsWithTelemetry: RunSkillsOptions = {\n ...options,\n telemetry,\n connectLog: options.connectLog ?? connectLog,\n createConnectSpinner: options.createConnectSpinner ?? createConnectSpinner,\n };\n\n try {\n telemetry.track(\"skills_cli started\");\n\n if (parsed.command === \"list\") {\n const skills = listSkills(optionsWithTelemetry);\n telemetry.track(\"skills_cli skills listed\", {\n availableCount: skills.length,\n available: skills.map((skill) => skill.id).join(\",\"),\n });\n if (parsed.printJson) {\n process.stdout.write(`${JSON.stringify(skills, null, 2)}\\n`);\n return;\n }\n for (const skill of skills) {\n const description = skill.description.replace(/[.?!]?$/, \".\");\n const aliases = skill.aliases.length\n ? ` Aliases: ${skill.aliases.join(\", \")}.`\n : \"\";\n const target = skill.local ? \"local command\" : skill.mcpUrl;\n process.stdout.write(\n `${skill.id.padEnd(12)} ${description}${aliases} (${target})\\n`,\n );\n }\n return;\n }\n\n if (parsed.command === \"status\" || parsed.command === \"update\") {\n runSkillsStatusOrUpdate(parsed, options, parsed.command === \"update\");\n return;\n }\n\n const targets = await resolveSkillTargets(parsed, optionsWithTelemetry);\n if (!targets) {\n telemetry.track(\"skills_cli cancelled\", { step: \"skills\" });\n return;\n }\n const preselected = Boolean(parsed.target);\n telemetry.track(\"skills_cli skills selected\", {\n selected: targets.join(\",\"),\n selectedCount: targets.length,\n // Best-effort \"took everything offered\" signal: compare against the\n // interactive picker's option count (the plan sub-skills collapse into a\n // single bundle target, so this is approximate, like the standalone CLI).\n selectedAll: targets.length === skillPromptOptions(options).length,\n preselected,\n });\n\n const includesPlans =\n targetsIncludePlans(targets) ||\n planSkillNamesSelected(parsed.plainSkillNames);\n const includesInstallModeSkills =\n targetsIncludeInstallModeSkills(targets) ||\n installModeSkillNamesSelected(parsed.plainSkillNames);\n if (parsed.planMode && !includesInstallModeSkills) {\n throw new Error(\n \"--mode only applies to visual-plan / visual-recap / visualize-repo / content.\",\n );\n }\n if (includesPlans) {\n if (!parsed.planMode && parsed.mcpUrl) {\n parsed.planMode = \"self-hosted\";\n }\n if (!parsed.planMode && shouldPrompt(parsed, options)) {\n const prompt = options.promptPlanMode ?? promptForPlanMode;\n const mode = await prompt({ initialMode: \"hosted\" });\n if (!mode) {\n telemetry.track(\"skills_cli cancelled\", { step: \"plan-mode\" });\n return;\n }\n parsed.planMode = mode;\n }\n if (!parsed.planMode) parsed.planMode = \"hosted\";\n if (parsed.planMode === \"self-hosted\" && !parsed.mcpUrl) {\n if (shouldPrompt(parsed, options)) {\n const prompt = options.promptPlanMcpUrl ?? promptForPlanMcpUrl;\n const mcpUrl = await prompt();\n if (!mcpUrl) {\n telemetry.track(\"skills_cli cancelled\", {\n step: \"plan-mcp-url\",\n });\n return;\n }\n parsed.mcpUrl = mcpUrl;\n } else {\n throw new Error(\n \"--mode self-hosted requires --mcp-url <url> in non-interactive mode.\",\n );\n }\n }\n telemetry.track(\"skills_cli plan mode selected\", {\n mode: parsed.planMode,\n });\n }\n\n const installsMcp = targetsInstallMcp(targets, parsed);\n const clients = await resolveSkillsClients(\n parsed,\n optionsWithTelemetry,\n installsMcp,\n );\n if (!clients) {\n telemetry.track(\"skills_cli cancelled\", { step: \"clients\" });\n return;\n }\n telemetry.track(\"skills_cli clients selected\", {\n clients: clients.join(\",\"),\n clientCount: clients.length,\n });\n\n // Ask where to install (project vs user) unless an explicit --scope was\n // passed or we are running non-interactively.\n if (!parsed.scopeExplicit && shouldPrompt(parsed, options)) {\n const promptScope = options.promptScope ?? promptForScope;\n const scope = await promptScope({ initialScope: \"project\" });\n if (!scope) {\n telemetry.track(\"skills_cli cancelled\", { step: \"scope\" });\n return;\n }\n parsed.scope = scope;\n }\n telemetry.track(\"skills_cli scope selected\", { scope: parsed.scope });\n\n const instructionSkillNames = selectedPlainSkillNamesForInstructionPrompt(\n targets,\n parsed,\n );\n if (\n parsed.updateInstructions === undefined &&\n hasManagedInstructionBlock(instructionSkillNames) &&\n shouldPrompt(parsed, options)\n ) {\n const prompt =\n options.promptUpdateInstructions ?? promptForUpdateInstructions;\n const choice = await prompt();\n if (choice === null) {\n telemetry.track(\"skills_cli cancelled\", {\n step: \"managed-instructions\",\n });\n return;\n }\n parsed.updateInstructions = choice === true;\n }\n\n // Decide the optional PR Visual Recap GitHub Action UP FRONT — before any\n // install or MCP registration — so every prompt is answered before we touch\n // disk. The choice is threaded into each install via `withGithubAction` +\n // `githubActionResolved` (so addAgentNativeSkill doesn't re-prompt mid-flow).\n const recapBaseDir = options.baseDir ?? process.cwd();\n const anyRecapTarget =\n targets.some((target) => {\n if (normalizeKnownSkillTarget(target) !== \"visual-plans\") return false;\n const only = builtInOnlySkillNames(target);\n return !only || only.includes(\"visual-recap\");\n }) || recapSkillNamesSelected(parsed.plainSkillNames);\n if (\n anyRecapTarget &&\n !parsed.withGithubAction &&\n !fs.existsSync(prVisualRecapWorkflowPath(recapBaseDir)) &&\n shouldPrompt(parsed, options)\n ) {\n const prompt = options.promptGithubAction ?? promptForGithubAction;\n const choice = await prompt({\n workflowPath: prVisualRecapWorkflowDisplayPath(),\n setupCommand: prVisualRecapSetupCommand(),\n docsUrl: PR_VISUAL_RECAP_DOCS_URL,\n });\n if (choice === null) {\n telemetry.track(\"skills_cli cancelled\", { step: \"github-action\" });\n }\n parsed.withGithubAction = choice === true;\n parsed.githubActionResolved = true;\n }\n\n const results: SkillsAddResult[] = [];\n for (const target of targets) {\n results.push(\n await addAgentNativeSkill(\n {\n ...parsed,\n target,\n client: clientArgForClients(clients),\n clients,\n },\n {\n ...optionsWithTelemetry,\n log,\n },\n ),\n );\n }\n\n // The add flow succeeded for every target — record the funnel completion\n // before printing output (output below cannot fail the install).\n const completedSkills = [\n ...new Set(results.flatMap((result) => result.skillNames)),\n ];\n const completedClients = [\n ...new Set(results.flatMap((result) => result.mcpClients)),\n ];\n telemetry.track(\"skills_cli completed\", {\n skills: completedSkills.join(\",\"),\n clients: completedClients.join(\",\"),\n scope: parsed.scope,\n durationMs: Date.now() - startedAt,\n });\n\n if (parsed.printJson) {\n process.stdout.write(\n `${JSON.stringify(results.length === 1 ? results[0] : results, null, 2)}\\n`,\n );\n return;\n }\n\n if (parsed.dryRun) {\n process.stdout.write(\n `${results.flatMap((result) => result.commands).join(\"\\n\")}\\n`,\n );\n return;\n }\n\n const installedNames = results\n .map((result) => result.displayName)\n .join(\", \");\n const skillsAgents = [\n ...new Set(results.flatMap((result) => result.skillsAgents)),\n ];\n const mcpClients = [\n ...new Set(results.flatMap((result) => result.mcpClients)),\n ];\n const mcpUrls = [\n ...new Set(results.map((result) => result.mcpUrl).filter(Boolean)),\n ];\n const localCommands = [\n ...new Set(\n results\n .filter((result) => result.local && result.scriptPath)\n .flatMap((result) => result.commands),\n ),\n ];\n const planModes = [\n ...new Set(\n results\n .map((result) => result.planMode)\n .filter((mode): mode is PlanInstallMode => Boolean(mode)),\n ),\n ];\n const authConnected = results.some((result) => result.connected);\n const pendingConnectCommands = [\n ...new Set(\n results\n .map((result) => result.connectCommand)\n .filter((command): command is string => Boolean(command)),\n ),\n ];\n const authLine = authConnected\n ? \"Authentication: completed.\"\n : pendingConnectCommands.length\n ? `Authentication: pending — run ${pendingConnectCommands.join(\" && \")}`\n : \"\";\n const githubActions = [\n ...new Set(\n results\n .map((result) => result.githubActionPath)\n .filter((p): p is string => Boolean(p)),\n ),\n ];\n const githubActionLine = githubActions.length\n ? `PR Visual Recap workflow: wrote ${githubActions.join(\", \")}.\\nNext: run ${prVisualRecapSetupCommand()} to configure GitHub secrets/variables, or set them manually:\\n ${PR_VISUAL_RECAP_SETUP.join(\"\\n \")}`\n : \"\";\n const githubActionSuggestions = [\n ...new Set(\n results\n .map((result) => result.githubActionSuggestedCommand)\n .filter((command): command is string => Boolean(command)),\n ),\n ];\n const githubActionSuggestionLine = githubActionSuggestions.length\n ? `Optional PR Visual Recap workflow: run ${githubActionSuggestions.join(\n \" && \",\n )} to add automatic recap comments on pull requests.`\n : \"\";\n const clack = await import(\"@clack/prompts\");\n const summary = [\n skillsAgents.length\n ? `Skill instructions ${skillsAgents.map(skillInstructionAgentLabel).join(\", \")}`\n : \"Skill instructions skipped\",\n mcpClients.length\n ? `MCP config ${mcpClients.map((client) => CLIENT_LABELS[client]).join(\", \")}`\n : \"MCP config not required\",\n mcpUrls.length ? `MCP URL ${mcpUrls.join(\", \")}` : \"\",\n planModes.length\n ? `Install mode ${planModes.map(planModeSummary).join(\", \")}`\n : \"\",\n authConnected\n ? \"Authentication completed\"\n : pendingConnectCommands.length\n ? `Authentication pending — run ${pendingConnectCommands.join(\" && \")}`\n : \"\",\n localCommands.length\n ? `Local command ${localCommands.join(\", \")}`\n : \"\",\n ].filter(Boolean);\n clack.note(\n summary.join(\"\\n\"),\n `Installed ${installedNames} skill${results.length === 1 ? \"\" : \"s\"}`,\n );\n\n // OAuth clients (Claude Code) can finish auth in-host via /mcp, not only by\n // running the connect command — surface that on the no-connect/pending path\n // so a hosted install isn't left looking \"done but unauthenticated\".\n if (\n !authConnected &&\n mcpClients.some(\n (client) => client === \"claude-code\" || client === \"claude-code-cli\",\n )\n ) {\n clack.log.info(\n \"Claude Code: reload the client, then open /mcp and choose Authenticate to finish connecting\" +\n (pendingConnectCommands.length\n ? \" (or run the connect command above).\"\n : \".\"),\n );\n }\n\n // GitHub Action follow-ups — kept as exact, copy-pasteable command lines.\n for (const line of [githubActionLine, githubActionSuggestionLine].filter(\n Boolean,\n )) {\n clack.log.info(line);\n }\n\n const slashCommands = completedSkills.map((name) => `/${name}`).join(\" \");\n const configuredEveryClient = SKILLS_CLIENTS.every((client) =>\n clients.includes(client),\n );\n const clientHint = configuredEveryClient\n ? \"\"\n : \"\\n Add another client later with --client <client> (e.g. --client claude-code).\";\n const reloadTarget = mcpClients.length > 0 ? \"skill + MCP server\" : \"skill\";\n clack.outro(\n `✅ All set! Start using ${slashCommands || \"your new skills\"} in your agent client.` +\n `\\n You may need to reload the client for the ${reloadTarget} to appear.` +\n clientHint,\n );\n } catch (error) {\n telemetry.track(\"skills_cli failed\", {\n command: parsed.command,\n error: error instanceof Error ? error.message : String(error),\n durationMs: Date.now() - startedAt,\n });\n telemetry.captureException(error, {\n handled: false,\n tags: { source: \"skills-command\", command: parsed.command },\n extra: { durationMs: Date.now() - startedAt },\n });\n throw error;\n } finally {\n await telemetry.flush();\n if (previousDirect === undefined) {\n delete process.env.AGENT_NATIVE_SKILLS_DIRECT;\n } else {\n process.env.AGENT_NATIVE_SKILLS_DIRECT = previousDirect;\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/cli/skills.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * `agent-native skills` is the friendly install surface for app-backed skills.\n * The lower-level `app-skill` commands remain the packaging primitives; this\n * command handles the common \"install Assets for my agent\" path in one step.\n */\n\nimport { spawn } from \"node:child_process\";\nimport { createHash } from \"node:crypto\";\nimport fs from \"node:fs\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nimport {\n MCP_LEGACY_ROUTE_PREFIX,\n MCP_PUBLIC_ROUTE_PREFIX,\n} from \"../mcp/route-paths.js\";\nimport {\n buildAppSkillPack,\n ensureAppSkill,\n loadAppSkillManifest,\n normalizeAppSkillManifest,\n type AppSkillManifest,\n type LoadedAppSkillManifest,\n} from \"./app-skill.js\";\nimport {\n resolveClients,\n runConnect,\n writeConnectClientPreferences,\n} from \"./connect.js\";\nimport {\n CONTEXT_XRAY_SKILL_MD,\n installLocalContextXray,\n} from \"./context-xray-local.js\";\nimport { CLIENTS, configPathFor, type ClientId } from \"./mcp-config-writers.js\";\nimport {\n installScreenMemoryForClient,\n resolveScreenMemoryStoreDir,\n} from \"./mcp.js\";\nimport { PR_VISUAL_RECAP_SETUP, writePrVisualRecapWorkflow } from \"./recap.js\";\nimport { setupAgentSymlinks } from \"./setup-agents.js\";\nimport {\n ASSETS_SKILL_MD,\n CANVAS_REFERENCE_MD,\n CONNECTION_REFERENCE_MD,\n CONTENT_SKILL_MD,\n DESIGN_EXPLORATION_SKILL_MD,\n DESIGN_VISUAL_EDIT_SKILL_MD,\n DOCUMENT_QUALITY_REFERENCE_MD,\n EXEMPLAR_REFERENCE_MD,\n HELP,\n LOCAL_FILES_REFERENCE_MD,\n REWIND_SKILL_MD,\n VISUAL_PLANS_SKILL_MD,\n VISUAL_RECAP_SKILL_MD,\n VISUALIZE_REPO_SKILL_MD,\n WIREFRAME_REFERENCE_MD,\n} from \"./skills-content/index.js\";\nimport { createCliTelemetry, type CliTelemetry } from \"./telemetry.js\";\n\nexport {\n CANVAS_REFERENCE_MD,\n CONNECTION_REFERENCE_MD,\n DOCUMENT_QUALITY_REFERENCE_MD,\n EXEMPLAR_REFERENCE_MD,\n LOCAL_FILES_REFERENCE_MD,\n VISUAL_PLANS_SKILL_MD,\n VISUAL_RECAP_SKILL_MD,\n VISUALIZE_REPO_SKILL_MD,\n WIREFRAME_REFERENCE_MD,\n};\n\nexport const BUILT_IN_APP_SKILLS = {\n assets: {\n skillName: \"assets\",\n manifest: normalizeAppSkillManifest({\n schemaVersion: 1,\n id: \"assets\",\n displayName: \"Assets\",\n description:\n \"Create, search, select, and export brand image and video assets from the Assets app.\",\n hosted: {\n url: \"https://assets.agent-native.com\",\n mcpUrl: \"https://assets.agent-native.com/mcp\",\n },\n mcp: { serverName: \"agent-native-assets\" },\n auth: {\n mode: \"oauth\",\n setup:\n \"Authenticate with the Assets MCP connector in the host app. No shared secrets are stored in skill files.\",\n },\n surfaces: [\n {\n id: \"asset-picker\",\n action: \"open-asset-picker\",\n path: \"/picker\",\n mediaTypes: [\"image\", \"video\"],\n defaultMediaType: \"image\",\n },\n ],\n skills: [\n {\n path: \"skills/assets\",\n visibility: \"exported\",\n exportAs: \"assets\",\n },\n ],\n hostAdapters: [\n \"codex-plugin\",\n \"claude-marketplace\",\n \"vercel-skills\",\n \"plain-skill\",\n \"claude-skill\",\n \"chatgpt-mcp\",\n \"generic-mcp\",\n ],\n }),\n skillMarkdown: ASSETS_SKILL_MD,\n },\n content: {\n skillName: \"content\",\n manifest: normalizeAppSkillManifest({\n schemaVersion: 1,\n id: \"content\",\n displayName: \"Content\",\n description:\n \"Edit docs, blogs, resources, and MDX content through the Content app, including database-backed local-folder sources.\",\n hosted: {\n url: \"https://content.agent-native.com\",\n mcpUrl: \"https://content.agent-native.com/mcp\",\n },\n mcp: { serverName: \"agent-native-content\" },\n auth: {\n mode: \"oauth\",\n setup:\n \"Authenticate with the Content MCP connector in the host app. Local-folder synchronization requires a local Content app, Agent Native Desktop, or trusted local bridge for filesystem access.\",\n },\n surfaces: [\n {\n id: \"content-documents\",\n action: \"list-documents\",\n path: \"/\",\n },\n {\n id: \"content-local-files\",\n action: \"share-local-file-document\",\n path: \"/local-files\",\n },\n ],\n skills: [\n {\n path: \"skills/content\",\n visibility: \"exported\",\n exportAs: \"content\",\n },\n ],\n hostAdapters: [\n \"codex-plugin\",\n \"claude-marketplace\",\n \"vercel-skills\",\n \"plain-skill\",\n \"claude-skill\",\n \"chatgpt-mcp\",\n \"generic-mcp\",\n ],\n }),\n skillMarkdown: CONTENT_SKILL_MD,\n },\n rewind: {\n skillName: \"rewind\",\n screenMemoryMcp: true,\n manifest: normalizeAppSkillManifest({\n schemaVersion: 1,\n id: \"rewind\",\n displayName: \"Rewind\",\n description:\n \"Retrieve recent local Clips screen memory, chapters, transcripts, and exact frames through a privacy-preserving agent workflow.\",\n hosted: {\n url: \"https://clips.agent-native.com\",\n mcpUrl: \"https://clips.agent-native.com/mcp\",\n },\n mcp: { serverName: \"clips-screen-memory\" },\n auth: { mode: \"none\" },\n surfaces: [\n {\n id: \"rewind-memory\",\n path: \"/\",\n description:\n \"Search and inspect the user's local Clips Rewind memory through a bounded local MCP broker.\",\n },\n ],\n skills: [\n {\n path: \"skills/rewind\",\n visibility: \"exported\",\n exportAs: \"rewind\",\n },\n ],\n hostAdapters: [\"plain-skill\", \"claude-skill\", \"generic-mcp\"],\n }),\n skillMarkdown: REWIND_SKILL_MD,\n },\n design: {\n skillName: \"design-exploration\",\n extraSkills: {\n \"visual-edit\": DESIGN_VISUAL_EDIT_SKILL_MD,\n },\n manifest: normalizeAppSkillManifest({\n schemaVersion: 1,\n id: \"design\",\n displayName: \"Design\",\n description:\n \"Explore, compare, iterate, and export interactive UI design prototypes from the Design app.\",\n hosted: {\n url: \"https://design.agent-native.com\",\n mcpUrl: \"https://design.agent-native.com/mcp\",\n },\n mcp: { serverName: \"agent-native-design\" },\n auth: {\n mode: \"oauth\",\n setup:\n \"Authenticate with the Design MCP connector in the host app. No shared secrets are stored in skill files.\",\n },\n surfaces: [\n {\n id: \"design-exploration\",\n action: \"present-design-variants\",\n path: \"/design\",\n },\n {\n id: \"visual-edit\",\n action: \"add-localhost-screens\",\n path: \"/design\",\n },\n ],\n skills: [\n {\n path: \"skills/design-exploration\",\n visibility: \"exported\",\n exportAs: \"design-exploration\",\n },\n {\n path: \"skills/visual-edit\",\n visibility: \"exported\",\n exportAs: \"visual-edit\",\n },\n ],\n hostAdapters: [\n \"codex-plugin\",\n \"claude-marketplace\",\n \"vercel-skills\",\n \"plain-skill\",\n \"claude-skill\",\n \"chatgpt-mcp\",\n \"generic-mcp\",\n ],\n }),\n skillMarkdown: DESIGN_EXPLORATION_SKILL_MD,\n },\n \"visual-plans\": {\n skillName: \"visual-plan\",\n extraSkills: {\n \"visual-recap\": VISUAL_RECAP_SKILL_MD,\n \"visualize-repo\": VISUALIZE_REPO_SKILL_MD,\n },\n // Sibling reference files materialized alongside each skill's SKILL.md\n // (progressive disclosure). Keyed by skill name -> relative path -> content.\n // Both plan skills ship the same canonical wireframe-quality reference; the\n // canvas / document-quality / exemplar references are visual-plan only.\n extraFiles: {\n \"visual-plan\": {\n \"references/wireframe.md\": WIREFRAME_REFERENCE_MD,\n \"references/canvas.md\": CANVAS_REFERENCE_MD,\n \"references/document-quality.md\": DOCUMENT_QUALITY_REFERENCE_MD,\n \"references/exemplar.md\": EXEMPLAR_REFERENCE_MD,\n \"references/connection.md\": CONNECTION_REFERENCE_MD,\n \"references/local-files.md\": LOCAL_FILES_REFERENCE_MD,\n },\n \"visual-recap\": {\n \"references/wireframe.md\": WIREFRAME_REFERENCE_MD,\n \"references/connection.md\": CONNECTION_REFERENCE_MD,\n \"references/local-files.md\": LOCAL_FILES_REFERENCE_MD,\n },\n },\n manifest: normalizeAppSkillManifest({\n schemaVersion: 1,\n id: \"visual-plans\",\n displayName: \"Agent-Native Plan\",\n description:\n \"Create rich interactive visual plans, recaps, and repo-native visual docs with diagrams, file maps, annotated code and diffs, API/schema summaries, feedback, and HTML export.\",\n hosted: {\n url: \"https://plan.agent-native.com\",\n mcpUrl: \"https://plan.agent-native.com/mcp\",\n },\n mcp: { serverName: \"plan\", aliases: [\"agent-native-plans\"] },\n auth: {\n mode: \"oauth\",\n setup:\n \"The marketplace plugin uses hosted Agent-Native Plans by default. To choose local-files or self-hosted mode, install with the Agent-Native CLI. Authenticate only for hosted/account-backed sharing.\",\n },\n surfaces: [\n {\n id: \"visual-plan\",\n action: \"create-visual-plan\",\n path: \"/plans\",\n description:\n \"Create a rich interactive visual plan instead of a plain-text plan, with diagrams, file maps, annotated code, questions, and optional UI/prototype review.\",\n },\n {\n id: \"visual-recap\",\n action: \"create-visual-recap\",\n path: \"/plans\",\n description:\n \"Create an interactive visual recap from a PR, commit, branch, or git diff so reviewers see the shape of the change before raw diff review.\",\n },\n {\n id: \"visualize-repo\",\n path: \"/local-plans\",\n description:\n \"Open a local, repo-backed visual documentation workspace for APIs, components, models, flows, comments, and coding-agent handoff.\",\n },\n ],\n skills: [\n {\n path: \"skills/visual-plan\",\n visibility: \"exported\",\n exportAs: \"visual-plan\",\n },\n {\n path: \"skills/visual-recap\",\n visibility: \"exported\",\n exportAs: \"visual-recap\",\n },\n {\n path: \"skills/visualize-repo\",\n visibility: \"exported\",\n exportAs: \"visualize-repo\",\n },\n ],\n hostAdapters: [\n \"codex-plugin\",\n \"claude-marketplace\",\n \"vercel-skills\",\n \"plain-skill\",\n \"claude-skill\",\n \"chatgpt-mcp\",\n \"generic-mcp\",\n ],\n }),\n skillMarkdown: VISUAL_PLANS_SKILL_MD,\n },\n \"context-xray\": {\n skillName: \"context-xray\",\n localOnly: true,\n manifest: normalizeAppSkillManifest({\n schemaVersion: 1,\n id: \"context-xray\",\n displayName: \"Context X-Ray\",\n description:\n \"Visualize local Codex and Claude Code context usage with warnings and optimization tips.\",\n hosted: {\n url: \"https://context-xray.agent-native.com\",\n mcpUrl: \"https://context-xray.agent-native.com/mcp\",\n },\n mcp: { serverName: \"agent-native-context-xray\" },\n auth: { mode: \"none\" },\n surfaces: [\n {\n id: \"context-xray-report\",\n path: \"/\",\n },\n ],\n skills: [\n {\n path: \"skills/context-xray\",\n visibility: \"exported\",\n exportAs: \"context-xray\",\n },\n ],\n hostAdapters: [\"plain-skill\", \"claude-skill\"],\n }),\n skillMarkdown: CONTEXT_XRAY_SKILL_MD,\n },\n} satisfies Record<\n string,\n {\n manifest: AppSkillManifest;\n skillMarkdown: string;\n skillName: string;\n extraSkills?: Record<string, string>;\n /**\n * Extra sibling files materialized alongside a skill's SKILL.md, for\n * progressive disclosure (e.g. `references/wireframe.md`). Keyed by skill\n * name, then by skill-relative path -> file content.\n */\n extraFiles?: Record<string, Record<string, string>>;\n localOnly?: boolean;\n screenMemoryMcp?: boolean;\n }\n>;\n\ntype BuiltInAppSkillId = keyof typeof BUILT_IN_APP_SKILLS;\ntype ModeAwareAppSkillId = \"visual-plans\" | \"content\";\n\nexport const AGENT_NATIVE_SKILL_METADATA_FILE = \"agent-native-skill.json\";\n\nconst BUILT_IN_APP_SKILL_ALIASES = {\n assets: \"assets\",\n asset: \"assets\",\n \"asset-generation\": \"assets\",\n images: \"assets\",\n image: \"assets\",\n \"image-generation\": \"assets\",\n \"agent-native-assets\": \"assets\",\n \"agent-native-images\": \"assets\",\n content: \"content\",\n docs: \"content\",\n documents: \"content\",\n \"local-content\": \"content\",\n \"content-local-files\": \"content\",\n \"agent-native-content\": \"content\",\n rewind: \"rewind\",\n \"screen-memory\": \"rewind\",\n \"clips-rewind\": \"rewind\",\n \"agent-native-rewind\": \"rewind\",\n design: \"design\",\n \"ui-design\": \"design\",\n \"ux-design\": \"design\",\n \"design-exploration\": \"design\",\n \"visual-edit\": \"design\",\n \"local-visual-edit\": \"design\",\n \"design-visual-edit\": \"design\",\n \"ux-exploration\": \"design\",\n \"agent-native-design\": \"design\",\n \"agent-native-design-exploration\": \"design\",\n \"visual-plans\": \"visual-plans\",\n \"visual-plan\": \"visual-plans\",\n \"visual-recap\": \"visual-plans\",\n \"visual-recaps\": \"visual-plans\",\n \"visualize-repo\": \"visual-plans\",\n visualize: \"visual-plans\",\n \"repo-visualizer\": \"visual-plans\",\n \"visual-docs\": \"visual-plans\",\n \"code-review-recap\": \"visual-plans\",\n \"code-review-recaps\": \"visual-plans\",\n \"html-plan\": \"visual-plans\",\n \"plan-mode\": \"visual-plans\",\n plannotate: \"visual-plans\",\n plannotator: \"visual-plans\",\n \"agent-native-visual-plans\": \"visual-plans\",\n \"context-xray\": \"context-xray\",\n \"local-context-xray\": \"context-xray\",\n xray: \"context-xray\",\n \"context-window\": \"context-xray\",\n \"context-usage\": \"context-xray\",\n \"agent-native-context-xray\": \"context-xray\",\n} satisfies Record<string, BuiltInAppSkillId>;\n\nconst BUILT_IN_APP_SKILL_DISPLAY_ALIASES = {\n assets: [\"images\", \"image-generation\", \"agent-native-images\"],\n content: [\n \"docs\",\n \"documents\",\n \"local-content\",\n \"content-local-files\",\n \"agent-native-content\",\n ],\n rewind: [\"screen-memory\", \"clips-rewind\", \"agent-native-rewind\"],\n design: [\n \"design-exploration\",\n \"visual-edit\",\n \"local-visual-edit\",\n \"ux-exploration\",\n \"agent-native-design-exploration\",\n ],\n \"visual-plans\": [\n \"visual-plan\",\n \"visual-recap\",\n \"visualize-repo\",\n \"code-review-recap\",\n \"html-plan\",\n \"plannotate\",\n ],\n \"context-xray\": [\"xray\", \"context-window\", \"context-usage\"],\n} satisfies Record<BuiltInAppSkillId, string[]>;\n\nconst CLIENT_LABELS: Record<ClientId, string> = {\n \"claude-code\": \"Claude Code\",\n \"claude-code-cli\": \"Claude Code CLI\",\n codex: \"Codex\",\n cowork: \"Claude Cowork\",\n cursor: \"Cursor\",\n opencode: \"OpenCode\",\n \"github-copilot\": \"GitHub Copilot / VS Code\",\n};\n\nconst CLIENT_HINTS: Record<ClientId, string> = {\n \"claude-code\": \".mcp.json or ~/.claude.json\",\n \"claude-code-cli\": \".mcp.json or ~/.claude.json\",\n codex: \"$CODEX_HOME/config.toml or ~/.codex/config.toml\",\n cowork: \"~/.cowork/mcp.json\",\n cursor: \".cursor/mcp.json or ~/.cursor/mcp.json\",\n opencode: \"opencode.json or ~/.config/opencode/opencode.json\",\n \"github-copilot\": \".vscode/mcp.json or VS Code user mcp.json\",\n};\n\ntype SkillInstructionClientId = ClientId | \"pi\";\n\nconst SKILLS_CLIENTS: ClientId[] = [\n \"claude-code\",\n \"codex\",\n \"cowork\",\n \"cursor\",\n \"opencode\",\n \"github-copilot\",\n];\nconst SKILL_INSTRUCTION_CLIENTS: SkillInstructionClientId[] = [\n \"codex\",\n \"claude-code\",\n \"pi\",\n];\nconst SKILL_INSTRUCTION_PROMPT_CLIENTS: SkillInstructionClientId[] = [\n \"codex\",\n \"claude-code\",\n];\n// Clients that don't write their own instruction files but READ the shared\n// `.agents/skills` path the codex install writes. In instructions/local-files\n// mode they resolve to that shared-agents install instead of being dropped, so\n// `--client cursor --mode local-files` (etc.) installs the skills they read\n// rather than failing with an empty client set.\nconst SHARED_AGENTS_READER_CLIENTS = new Set<SkillInstructionClientId>([\n \"cursor\",\n \"opencode\",\n \"github-copilot\",\n \"cowork\",\n]);\nconst SKILL_INSTRUCTION_CLIENT_LABELS: Record<\n SkillInstructionClientId,\n string\n> = {\n \"claude-code\": \"Claude Code\",\n \"claude-code-cli\": \"Claude Code\",\n codex: \"Shared .agents skills\",\n cowork: \"MCP only\",\n pi: \"Pi\",\n};\nconst SKILL_INSTRUCTION_CLIENT_HINTS: Record<SkillInstructionClientId, string> =\n {\n \"claude-code\":\n \"Also write Claude Code's native .claude/skills and commands files.\",\n \"claude-code-cli\":\n \"Also write Claude Code's native .claude/skills and commands files.\",\n codex:\n \"Project scope writes .agents skills/commands for Codex, Pi, Cursor, OpenCode, Copilot, and similar agents; user scope writes Codex's ~/.codex skills/commands.\",\n cowork: \"MCP only\",\n pi: \"Project scope writes .agents/skills plus .pi/prompts; user scope writes ~/.agents/skills plus ~/.pi/agent/prompts.\",\n };\n\ntype SkillsCommand = \"list\" | \"add\" | \"status\" | \"update\" | \"help\";\ntype PlanInstallMode = \"hosted\" | \"local-files\" | \"self-hosted\";\n\nexport interface ParsedSkillsArgs {\n command: SkillsCommand;\n target?: string;\n baseDir?: string;\n client: string;\n clientExplicit: boolean;\n clients?: SkillInstructionClientId[];\n plainSkillNames?: string[];\n scope: string;\n scopeExplicit: boolean;\n yes: boolean;\n dryRun: boolean;\n printJson: boolean;\n instructions: boolean;\n mcp: boolean;\n /**\n * Run the browser/device auth flow after registering a hosted MCP connector\n * so the user does not hit an OAuth wall on the first tool call. Default true;\n * `--no-connect` opts out and leaves authentication for the host/`agent-native\n * connect`.\n */\n connect: boolean;\n /**\n * Optional MCP URL override. When set, the skill's hosted MCP connector is\n * registered against this URL instead of the built-in hosted default — e.g.\n * an ngrok tunnel, a local dev origin, or a self-hosted deployment.\n */\n mcpUrl?: string;\n /**\n * Storage/backend mode for app-backed skills that support install modes. The\n * field name is kept for CLI/API compatibility with the original Plan-only\n * implementation.\n */\n planMode?: PlanInstallMode;\n /**\n * When installing the visual-plan skill, also write the PR Visual Recap\n * GitHub Action workflow into `.github/workflows/` so PRs get automatic\n * recaps. Only applies to the `visual-plan` target.\n */\n withGithubAction?: boolean;\n /**\n * Set once the PR Visual Recap workflow decision has already been made up\n * front (in `runSkills`, before any install/registration) so the per-target\n * `addAgentNativeSkill` doesn't prompt for it again mid-flow. The chosen\n * value lands in `withGithubAction`.\n */\n githubActionResolved?: boolean;\n /**\n * Plain skill repos can add a managed AGENTS.md / CLAUDE.md block for skills\n * that only become automatic through project instructions.\n */\n updateInstructions?: boolean;\n /**\n * When `--with-github-action` is set and the existing workflow file differs\n * from the bundled template, overwrite it. Without this flag the command\n * refuses and prints a message.\n */\n force?: boolean;\n}\n\nexport interface SkillsAddResult {\n id: string;\n displayName: string;\n instructionSource?: string;\n skillNames: string[];\n skillsAgents: string[];\n mcpUrl: string;\n mcpClients: ClientId[];\n dryRun: boolean;\n commands: string[];\n local?: boolean;\n scriptPath?: string;\n written?: string[];\n /**\n * True when the install also kicked off (or prepared) the browser/device auth\n * flow for the hosted MCP connector. False when connect was skipped\n * (`--no-connect`, no-auth skills, or non-interactive without a connect step).\n */\n connected?: boolean;\n /**\n * The exact `npx @agent-native/core@latest connect <url>` command to run when interactive auth\n * was skipped (non-interactive shell / CI). Empty when connect ran inline or\n * was not needed.\n */\n connectCommand?: string;\n /**\n * When `--with-github-action` installed the PR Visual Recap workflow, the\n * repo-relative path it was written to (and whether it overwrote an existing\n * file).\n */\n githubActionPath?: string;\n githubActionExisted?: boolean;\n githubActionSuggestedCommand?: string;\n localManifestPath?: string;\n planMode?: PlanInstallMode;\n}\n\ninterface SkillInstallMetadata {\n schemaVersion: 1;\n source: \"agent-native\";\n appSkillId: string;\n displayName: string;\n skillName: string;\n contentHash: string;\n mcpUrl: string;\n installedAt: string;\n installCommand: string;\n updateCommand: string;\n planMode?: PlanInstallMode;\n}\n\ninterface SkillFolderBundle {\n appSkillId: BuiltInAppSkillId;\n displayName: string;\n skillName: string;\n mcpUrl: string;\n files: Record<string, string>;\n contentHash: string;\n planMode?: PlanInstallMode;\n}\n\ninterface SkillInstallState {\n appSkillId: BuiltInAppSkillId;\n displayName: string;\n skillName: string;\n path: string;\n root: string;\n scope: \"project\" | \"user\";\n client: string;\n latestHash: string;\n installedHash: string | null;\n metadataHash?: string;\n planMode?: PlanInstallMode;\n mcpUrl?: string;\n current: boolean;\n managed: boolean;\n}\n\ninterface ScaffoldGuidanceState {\n kind: \"workspace-core\" | \"standalone\";\n displayName: string;\n templateName: \"workspace-core\" | \"headless\" | \"default\";\n path: string;\n sourcePath: string;\n projectRoot: string;\n workspaceRoot?: string;\n sharedPackageDir?: string;\n current: boolean;\n skillCount: number;\n}\n\ninterface SkillInstallTarget {\n id: string;\n displayName: string;\n loaded: LoadedAppSkillManifest;\n skillNames: string[];\n modeAwareId?: ModeAwareAppSkillId;\n materializeInstructions(outDir: string): string;\n cleanup?: () => void;\n}\n\ninterface RunCommandOptions {\n stdio?: \"inherit\" | \"stderr\" | \"silent\";\n}\n\nexport type SkillsCatalogMode = \"agent-native\" | \"all\";\n\nexport interface PublicSkillCatalogEntry {\n name: string;\n description?: string;\n}\n\ninterface ConnectSpinner {\n start(message?: string): void;\n clear(): void;\n}\n\nexport interface RunSkillsOptions {\n baseDir?: string;\n /**\n * Which skills appear in the shared add/list picker. `agent-native` is the\n * core CLI surface; `all` is used by @agent-native/skills to append public\n * skill-repo entries while keeping every prompt and install decision here.\n */\n catalogMode?: SkillsCatalogMode;\n /**\n * The plain skills repo/source to install when a public catalog entry is\n * selected. @agent-native/skills usually passes the materialized source root.\n */\n publicSkillSource?: string;\n /**\n * Public skill-repo entries discovered by @agent-native/skills. Core owns the\n * user-facing flow; the wrapper owns materializing the broader catalog.\n */\n publicSkillEntries?: PublicSkillCatalogEntry[];\n /**\n * Built-in Agent Native skill prompt/list entries to hide for wrapper CLIs.\n * Direct installs by explicit name still work; this only controls discovery.\n */\n hiddenBuiltInSkillTargets?: string[];\n isInteractive?: () => boolean;\n log?: (message: string) => void;\n /**\n * Optional output hook for the embedded `agent-native connect` transcript.\n * Defaults to `log`; the clack-based CLI uses this to render the multi-line\n * auth details as one continuous guide block instead of separate status logs.\n */\n connectLog?: (message: string) => void;\n /**\n * Optional spinner factory for the embedded connect flow. The default CLI only\n * enables this for real TTYs so captured/test output stays deterministic.\n */\n createConnectSpinner?: () => ConnectSpinner | undefined;\n promptClients?: (\n context: SkillsClientPromptContext,\n ) => Promise<SkillInstructionClientId[] | null>;\n promptSkills?: (\n context: SkillsTargetPromptContext,\n ) => Promise<string[] | null>;\n promptGithubAction?: (\n context: SkillsGithubActionPromptContext,\n ) => Promise<boolean | null>;\n promptScope?: (\n context: SkillsScopePromptContext,\n ) => Promise<\"project\" | \"user\" | null>;\n promptPlanMode?: (\n context: SkillsPlanModePromptContext,\n ) => Promise<PlanInstallMode | null>;\n promptPlanMcpUrl?: () => Promise<string | null>;\n promptUpdateInstructions?: () => Promise<boolean | null>;\n runCommand?: (\n cmd: string,\n args: string[],\n options?: RunCommandOptions,\n ) => Promise<number>;\n /**\n * Injectable connect/auth entrypoint (defaults to the real `agent-native\n * connect`). Tests stub this so the install flow does not perform a real\n * browser/device OAuth round-trip.\n */\n runConnect?: (args: string[]) => Promise<void>;\n installScreenMemory?: typeof installScreenMemoryForClient;\n /**\n * Best-effort install-funnel telemetry. Created once per `runSkills` run and\n * threaded through resolution/install/connect so each `track` is fire-and-\n * forget and never blocks or throws into the install flow. Absent when\n * `addAgentNativeSkill` is called directly (e.g. tests).\n */\n telemetry?: CliTelemetry;\n}\n\ninterface SkillsClientPromptContext {\n initialClients: SkillInstructionClientId[];\n options: Array<{\n value: SkillInstructionClientId;\n label: string;\n hint: string;\n }>;\n installsMcp: boolean;\n}\n\ninterface SkillsTargetPromptContext {\n initialTargets: string[];\n options: Array<{ value: string; label: string; hint: string }>;\n}\n\ninterface SkillsGithubActionPromptContext {\n workflowPath: string;\n setupCommand: string;\n docsUrl: string;\n}\n\ninterface SkillsScopePromptContext {\n initialScope: \"project\" | \"user\";\n}\n\ninterface SkillsPlanModePromptContext {\n initialMode: PlanInstallMode;\n}\n\nfunction normalizeKnownSkillTarget(\n value: string | undefined,\n): BuiltInAppSkillId | undefined {\n const key = value?.trim().toLowerCase();\n if (!key) return undefined;\n return BUILT_IN_APP_SKILL_ALIASES[key];\n}\n\nfunction isKnownSkill(value: string | undefined): boolean {\n return Boolean(normalizeKnownSkillTarget(value));\n}\n\nfunction explicitlyTargetsRewind(parsed: ParsedSkillsArgs): boolean {\n return (\n normalizeKnownSkillTarget(parsed.target ?? \"assets\") === \"rewind\" ||\n Boolean(\n parsed.plainSkillNames?.some(\n (skillName) => normalizeKnownSkillTarget(skillName) === \"rewind\",\n ),\n )\n );\n}\n\nconst REWIND_MISSING_STORE_ERROR =\n \"No local Clips Screen Memory store was found. Clips Desktop is required for Rewind. Download and launch the signed app from https://clips.agent-native.com/download, turn Rewind on, then run the setup again. Clips Desktop was not installed or enabled automatically.\";\n\nfunction preflightRewindStore(parsed: ParsedSkillsArgs): string | undefined {\n if (parsed.command !== \"add\" || !explicitlyTargetsRewind(parsed))\n return undefined;\n if (!parsed.mcp) {\n throw new Error(\n \"Rewind requires the local Clips Screen Memory MCP and cannot be installed with --no-mcp.\",\n );\n }\n if (parsed.mcpUrl) {\n throw new Error(\n \"Rewind uses the local Clips Screen Memory MCP and does not accept --mcp-url.\",\n );\n }\n if (parsed.dryRun) return undefined;\n const screenMemoryDir = resolveScreenMemoryStoreDir();\n if (!screenMemoryDir) throw new Error(REWIND_MISSING_STORE_ERROR);\n return screenMemoryDir;\n}\n\nfunction preflightResolvedRewindTargets(\n parsed: ParsedSkillsArgs,\n targets: string[],\n): void {\n preflightRewindStore({\n ...parsed,\n target: undefined,\n plainSkillNames: [...(parsed.plainSkillNames ?? []), ...targets],\n });\n}\n\nfunction isLocalOnlyBuiltInSkill(\n entry: (typeof BUILT_IN_APP_SKILLS)[BuiltInAppSkillId] | null | undefined,\n): boolean {\n return Boolean(entry && \"localOnly\" in entry && entry.localOnly);\n}\n\nfunction isScreenMemoryMcpBuiltInSkill(\n entry: (typeof BUILT_IN_APP_SKILLS)[BuiltInAppSkillId] | null | undefined,\n): boolean {\n return Boolean(entry && \"screenMemoryMcp\" in entry && entry.screenMemoryMcp);\n}\n\nfunction targetSupportsInstallMode(\n targetId: string | undefined,\n): targetId is ModeAwareAppSkillId {\n return targetId === \"visual-plans\" || targetId === \"content\";\n}\n\nfunction localFilesModeSkipsMcp(\n targetId: string | undefined,\n mode: PlanInstallMode | undefined,\n): boolean {\n return mode === \"local-files\" && targetSupportsInstallMode(targetId);\n}\n\nfunction builtInExtraSkills(\n entry: (typeof BUILT_IN_APP_SKILLS)[BuiltInAppSkillId],\n): Record<string, string> {\n return \"extraSkills\" in entry && entry.extraSkills ? entry.extraSkills : {};\n}\n\n/**\n * Sibling reference files for a skill (skill name -> relative path -> content),\n * materialized alongside its SKILL.md for progressive disclosure.\n */\nfunction builtInExtraFiles(\n entry: (typeof BUILT_IN_APP_SKILLS)[BuiltInAppSkillId],\n): Record<string, Record<string, string>> {\n return \"extraFiles\" in entry && entry.extraFiles ? entry.extraFiles : {};\n}\n\nfunction builtInSkillNames(\n entry: (typeof BUILT_IN_APP_SKILLS)[BuiltInAppSkillId],\n): string[] {\n return [entry.skillName, ...Object.keys(builtInExtraSkills(entry))];\n}\n\n/**\n * When a target names a single skill that lives inside a multi-skill bundle\n * (the plan bundle ships `visual-plan`, `visual-recap`, and `visualize-repo`),\n * restrict the install to just that skill. The bundle aliases (`visual-plans`,\n * `plannotate`, …) return undefined so they install every skill in the bundle.\n */\nfunction builtInOnlySkillNames(target: string): string[] | undefined {\n const normalized = target.trim().toLowerCase();\n if (normalized === \"visual-plan\") return [\"visual-plan\"];\n if (normalized === \"visual-recap\" || normalized === \"visual-recaps\") {\n return [\"visual-recap\"];\n }\n if (\n normalized === \"visualize-repo\" ||\n normalized === \"visualize\" ||\n normalized === \"repo-visualizer\" ||\n normalized === \"visual-docs\"\n ) {\n return [\"visualize-repo\"];\n }\n if (\n normalized === \"design-exploration\" ||\n normalized === \"agent-native-design-exploration\"\n ) {\n return [\"design-exploration\"];\n }\n if (\n normalized === \"visual-edit\" ||\n normalized === \"local-visual-edit\" ||\n normalized === \"design-visual-edit\"\n ) {\n return [\"visual-edit\"];\n }\n return undefined;\n}\n\nfunction stableSkillHash(files: Record<string, string>): string {\n const hash = createHash(\"sha256\");\n for (const rel of Object.keys(files).sort()) {\n if (rel === AGENT_NATIVE_SKILL_METADATA_FILE) continue;\n hash.update(rel);\n hash.update(\"\\0\");\n hash.update(files[rel]);\n hash.update(\"\\0\");\n }\n return hash.digest(\"hex\").slice(0, 16);\n}\n\nfunction insertAfterFrontmatter(markdown: string, block: string): string {\n if (!block.trim()) return markdown;\n const match = markdown.match(/^---\\n[\\s\\S]*?\\n---\\n/);\n if (!match) return `${block}\\n\\n${markdown}`;\n return `${match[0]}\\n${block.trim()}\\n\\n${markdown.slice(match[0].length)}`;\n}\n\nfunction planModeInstructionBlock(input: {\n mode: PlanInstallMode | undefined;\n mcpUrl?: string;\n}): string {\n if (input.mode === \"local-files\") {\n return `## Installed Mode\n\nDefault storage for this installation: local files. Create and update plans and\nrecaps as MDX folders under \\`plans/<slug>/\\` when they should be checked in, or\nunder a repo-ignored/temp folder when they should stay private scratch. Before\nauthoring structured MDX, run\n\\`npx @agent-native/core@latest plan blocks --out plan-blocks.md\\` and read the\nno-auth block catalog; it sends no plan content. Then run\n\\`npx @agent-native/core@latest plan local check --dir plans/<slug>\\`, then\n\\`npx @agent-native/core@latest plan local serve --dir plans/<slug> --kind plan|recap --open\\`,\nand report the local bridge URL from stdout or \\`plans/<slug>/.plan-url\\`. Treat\n\\`.plan-url\\` as a local token file and do not commit it. It opens the hosted Plan\nUI but reads from the localhost bridge on this machine, so it is not shareable\nacross machines. On macOS, use Chrome/Chromium if Safari blocks the localhost\nbridge; run \\`plan local verify --dir plans/<slug> --kind plan|recap\\` for\nheadless diagnostics. No sharing, all local. Use a hosted or self-hosted Plan MCP\nconnector only if the user explicitly asks to publish or share.`;\n }\n if (input.mode === \"self-hosted\") {\n return `## Installed Mode\n\nDefault storage for this installation: the configured self-hosted/custom Plan\napp${input.mcpUrl ? ` at \\`${input.mcpUrl}\\`` : \"\"}. Use that Plan MCP connector\nfor plans and recaps instead of assuming \\`https://plan.agent-native.com\\`.`;\n }\n return \"\";\n}\n\nfunction contentModeInstructionBlock(input: {\n mode: PlanInstallMode | undefined;\n mcpUrl?: string;\n}): string {\n if (input.mode === \"local-files\") {\n return `## Installed Mode\n\nDefault storage for this installation is Content's SQL database. This repo's\n\\`agent-native.json\\` declares \\`docs/\\`, \\`blog/\\`, \\`content/\\`, and\n\\`resources/\\` as local-folder sources with opaque connection ids; it does not\nselect a separate application mode. A trusted local Content app or Agent Native\nDesktop bridge imports those files into their workspace's canonical Files\ndatabase, after which normal Content document actions read and edit the SQL-backed\npages. Use \\`sync-manifest-local-folder-source\\` with each root's generated\nconnection id, or launch \\`agent-native content local-files <target>\\`, to connect\nand pull it. The hosted Content app cannot read private repo files by itself.`;\n }\n if (input.mode === \"self-hosted\") {\n return `## Installed Mode\n\nDefault storage for this installation: the configured self-hosted/custom Content\napp${input.mcpUrl ? ` at \\`${input.mcpUrl}\\`` : \"\"}. Use that Content MCP\nconnector instead of assuming \\`https://content.agent-native.com\\`.`;\n }\n return \"\";\n}\n\nfunction applyInstallModeToSkillMarkdown(\n markdown: string,\n input: {\n appSkillId: BuiltInAppSkillId;\n mode?: PlanInstallMode;\n mcpUrl?: string;\n },\n): string {\n let block = \"\";\n if (input.appSkillId === \"visual-plans\") {\n block = planModeInstructionBlock({\n mode: input.mode,\n mcpUrl: input.mcpUrl,\n });\n } else if (input.appSkillId === \"content\") {\n block = contentModeInstructionBlock({\n mode: input.mode,\n mcpUrl: input.mcpUrl,\n });\n }\n return insertAfterFrontmatter(markdown, block);\n}\n\nfunction skillFilesForBuiltIn(\n appSkillId: BuiltInAppSkillId,\n options: { planMode?: PlanInstallMode; mcpUrl?: string } = {},\n): Record<string, SkillFolderBundle> {\n const entry = BUILT_IN_APP_SKILLS[appSkillId];\n const skills: Record<string, string> = {\n [entry.skillName]: applyInstallModeToSkillMarkdown(entry.skillMarkdown, {\n appSkillId,\n mode: options.planMode,\n mcpUrl: options.mcpUrl,\n }),\n ...builtInExtraSkills(entry),\n };\n for (const [skillName, skillMarkdown] of Object.entries(\n builtInExtraSkills(entry),\n )) {\n skills[skillName] = applyInstallModeToSkillMarkdown(skillMarkdown, {\n appSkillId,\n mode: options.planMode,\n mcpUrl: options.mcpUrl,\n });\n }\n const extraFiles = builtInExtraFiles(entry);\n const out: Record<string, SkillFolderBundle> = {};\n for (const [skillName, skillMarkdown] of Object.entries(skills)) {\n const files = {\n \"SKILL.md\": skillMarkdown,\n ...(extraFiles[skillName] ?? {}),\n };\n out[skillName] = {\n appSkillId,\n displayName: entry.manifest.displayName,\n skillName,\n mcpUrl:\n isLocalOnlyBuiltInSkill(entry) ||\n isScreenMemoryMcpBuiltInSkill(entry) ||\n localFilesModeSkipsMcp(appSkillId, options.planMode)\n ? \"\"\n : (options.mcpUrl ?? entry.manifest.hosted.mcpUrl),\n files,\n contentHash: stableSkillHash(files),\n planMode: options.planMode,\n };\n }\n return out;\n}\n\nfunction latestSkillBundlesForTargets(\n appSkillIds: BuiltInAppSkillId[],\n): Record<string, SkillFolderBundle> {\n const out: Record<string, SkillFolderBundle> = {};\n for (const appSkillId of appSkillIds) {\n Object.assign(out, skillFilesForBuiltIn(appSkillId));\n }\n return out;\n}\n\nfunction writeSkillFolder(\n dir: string,\n bundle: SkillFolderBundle,\n installedAt = new Date().toISOString(),\n): void {\n const parent = path.dirname(dir);\n const tempDir = path.join(\n parent,\n `.${path.basename(dir)}.${process.pid}.${Date.now()}.tmp`,\n );\n try {\n fs.rmSync(tempDir, { recursive: true, force: true });\n fs.mkdirSync(tempDir, { recursive: true });\n for (const [rel, content] of Object.entries(bundle.files)) {\n const target = path.join(tempDir, rel);\n fs.mkdirSync(path.dirname(target), { recursive: true });\n fs.writeFileSync(target, content, \"utf-8\");\n }\n const metadata: SkillInstallMetadata = {\n schemaVersion: 1,\n source: \"agent-native\",\n appSkillId: bundle.appSkillId,\n displayName: bundle.displayName,\n skillName: bundle.skillName,\n contentHash: bundle.contentHash,\n mcpUrl: bundle.mcpUrl,\n installedAt,\n installCommand: `npx @agent-native/core@latest skills add ${bundle.skillName}`,\n updateCommand: `npx @agent-native/core@latest skills update ${bundle.skillName}`,\n ...(bundle.planMode ? { planMode: bundle.planMode } : {}),\n };\n fs.writeFileSync(\n path.join(tempDir, AGENT_NATIVE_SKILL_METADATA_FILE),\n `${JSON.stringify(metadata, null, 2)}\\n`,\n \"utf-8\",\n );\n fs.rmSync(dir, { recursive: true, force: true });\n fs.renameSync(tempDir, dir);\n } catch (error: any) {\n try {\n fs.rmSync(tempDir, { recursive: true, force: true });\n } catch {}\n throw new Error(\n `Cannot write Agent Native skill folder ${dir}: ${error?.message ?? error}`,\n { cause: error },\n );\n }\n}\n\nfunction isJsonRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value && typeof value === \"object\" && !Array.isArray(value));\n}\n\nfunction defaultContentLocalFilesAppConfig(): Record<string, unknown> {\n return {\n mode: \"local-files\",\n roots: [\n {\n name: \"Docs\",\n path: \"docs\",\n kind: \"docs\",\n extensions: [\".md\", \".mdx\"],\n },\n {\n name: \"Blog\",\n path: \"blog\",\n kind: \"blog\",\n extensions: [\".md\", \".mdx\"],\n },\n {\n name: \"Content\",\n path: \"content\",\n kind: \"content\",\n extensions: [\".md\", \".mdx\"],\n },\n {\n name: \"Resources\",\n path: \"resources\",\n kind: \"resources\",\n extensions: [\".md\", \".mdx\"],\n },\n ],\n components: \"components\",\n extensions: \"extensions\",\n hide: [\"**/_*.md\", \"**/_*.mdx\"],\n };\n}\n\nfunction contentLocalFilesManifestPath(baseDir: string): string {\n return path.join(baseDir, \"agent-native.json\");\n}\n\nfunction shouldWriteContentLocalFilesManifest(\n targetId: string | undefined,\n mode: PlanInstallMode | undefined,\n): boolean {\n return targetId === \"content\" && mode === \"local-files\";\n}\n\nfunction contentLocalFolderConnectionId(baseDir: string, rootPath: string) {\n const absoluteRootPath = path.resolve(baseDir, rootPath);\n let canonicalRootPath = absoluteRootPath;\n try {\n canonicalRootPath = fs.realpathSync(absoluteRootPath);\n } catch (error: any) {\n if (error?.code !== \"ENOENT\") throw error;\n }\n return `local-folder:${createHash(\"sha256\")\n .update(canonicalRootPath)\n .digest(\"base64url\")\n .slice(0, 24)}`;\n}\n\nfunction mergeContentLocalFilesManifest(\n existing: unknown,\n baseDir: string,\n): Record<string, unknown> {\n const manifest = isJsonRecord(existing) ? { ...existing } : {};\n if (manifest.version === undefined) manifest.version = 1;\n\n const apps = isJsonRecord(manifest.apps) ? { ...manifest.apps } : {};\n const contentApp = isJsonRecord(apps.content) ? { ...apps.content } : {};\n const defaults = defaultContentLocalFilesAppConfig();\n if (!Array.isArray(contentApp.roots) || contentApp.roots.length === 0) {\n contentApp.roots = defaults.roots;\n }\n contentApp.roots = contentApp.roots.map((root: unknown) => {\n if (!isJsonRecord(root) || typeof root.path !== \"string\") return root;\n const source = isJsonRecord(root.source) ? root.source : {};\n return {\n ...root,\n source: {\n ...source,\n type: \"local-folder\",\n connectionId:\n typeof source.connectionId === \"string\" && source.connectionId\n ? source.connectionId\n : contentLocalFolderConnectionId(baseDir, root.path),\n truthPolicy:\n typeof source.truthPolicy === \"string\"\n ? source.truthPolicy\n : \"source_primary\",\n },\n };\n });\n delete contentApp.mode;\n if (contentApp.components === undefined) {\n contentApp.components = defaults.components;\n }\n if (contentApp.extensions === undefined) {\n contentApp.extensions = defaults.extensions;\n }\n if (!Array.isArray(contentApp.hide) || contentApp.hide.length === 0) {\n contentApp.hide = defaults.hide;\n }\n apps.content = contentApp;\n manifest.apps = apps;\n return manifest;\n}\n\nfunction writeContentLocalFilesManifest(\n baseDir: string,\n options: { dryRun?: boolean } = {},\n): string {\n const manifestPath = contentLocalFilesManifestPath(baseDir);\n let existing: unknown = {};\n if (fs.existsSync(manifestPath)) {\n try {\n existing = JSON.parse(fs.readFileSync(manifestPath, \"utf-8\"));\n } catch (error: any) {\n throw new Error(\n `Could not parse ${manifestPath}: ${error?.message ?? error}`,\n );\n }\n }\n const manifest = mergeContentLocalFilesManifest(existing, baseDir);\n if (!options.dryRun) {\n fs.writeFileSync(\n manifestPath,\n `${JSON.stringify(manifest, null, 2)}\\n`,\n \"utf-8\",\n );\n }\n return manifestPath;\n}\n\n/**\n * The skills directory a built-in skill's instructions are copied into for a\n * given agent + scope. Mirrors the layout the skills installer uses so\n * `skills status` / `skills update` find the folders again.\n */\nfunction builtInSkillsRootForAgent(\n agent: string,\n scope: \"project\" | \"user\",\n baseDir: string,\n): string {\n const home = homeDir() ?? baseDir;\n if (scope === \"project\") {\n if (agent === \"claude-code\" || agent === \"claude-code-cli\") {\n return path.join(baseDir, \".claude\", \"skills\");\n }\n return path.join(baseDir, \".agents\", \"skills\");\n }\n if (agent === \"codex\") {\n return process.env.CODEX_HOME\n ? path.join(process.env.CODEX_HOME, \"skills\")\n : path.join(home, \".codex\", \"skills\");\n }\n if (agent === \"pi\") {\n return path.join(home, \".agents\", \"skills\");\n }\n if (\n agent === \"cursor\" ||\n agent === \"opencode\" ||\n agent === \"github-copilot\"\n ) {\n return path.join(home, \".agents\", \"skills\");\n }\n return path.join(home, \".claude\", \"skills\");\n}\n\nfunction builtInCommandsRootForAgent(\n agent: string,\n scope: \"project\" | \"user\",\n baseDir: string,\n): string {\n const home = homeDir() ?? baseDir;\n if (scope === \"project\") {\n if (agent === \"codex\") return path.join(baseDir, \".agents\", \"commands\");\n if (agent === \"pi\") return path.join(baseDir, \".pi\", \"prompts\");\n return path.join(baseDir, \".claude\", \"commands\");\n }\n if (agent === \"codex\") {\n return process.env.CODEX_HOME\n ? path.join(process.env.CODEX_HOME, \"commands\")\n : path.join(home, \".codex\", \"commands\");\n }\n if (agent === \"pi\") {\n const piHome =\n process.env.PI_CODING_AGENT_DIR || path.join(home, \".pi\", \"agent\");\n return path.join(piHome, \"prompts\");\n }\n return path.join(home, \".claude\", \"commands\");\n}\n\nfunction slashCommandForBuiltInSkill(skillName: string): string | null {\n if (skillName === \"visual-plan\") {\n return `---\ndescription: Create an interactive Agent-Native visual plan for the current task.\nargument-hint: [optional request or scope]\n---\n\nUse the visual-plan skill for this task. Treat any arguments as the user's\nrequested plan scope or focus:\n\n$ARGUMENTS\n`;\n }\n if (skillName === \"visual-recap\") {\n return `---\ndescription: Create an interactive Agent-Native visual recap for a PR, branch, commit, or diff.\nargument-hint: [PR, branch, commit, diff, or scope]\n---\n\nUse the visual-recap skill. Treat any arguments as the recap target or focus:\n\n$ARGUMENTS\n`;\n }\n if (skillName === \"visualize-repo\") {\n return `---\ndescription: Open or create a local Agent-Native visual docs workspace for this repo.\nargument-hint: [optional targets or focus]\n---\n\nUse the visualize-repo skill. Treat any arguments as source targets, repo areas,\nor review focus:\n\n$ARGUMENTS\n`;\n }\n return null;\n}\n\n/**\n * Write a built-in skill's instruction folders straight into each client's\n * skills directory. Built-in skills ship their SKILL.md inside this package, so\n * there is no need to shell out to the separate @agent-native/skills installer\n * (which would have to be published to npm first). Returns the written folders.\n */\ntype BuiltInInstructionInstallInput = {\n appSkillId: BuiltInAppSkillId;\n onlySkillNames?: string[];\n skillsAgents: string[];\n scope: \"project\" | \"user\";\n baseDir: string;\n dryRun?: boolean;\n planMode?: PlanInstallMode;\n mcpUrl?: string;\n};\n\nfunction builtInInstructionPaths(\n input: BuiltInInstructionInstallInput,\n): string[] {\n const bundles = Object.values(\n skillFilesForBuiltIn(input.appSkillId, {\n planMode: input.planMode,\n mcpUrl: input.mcpUrl,\n }),\n ).filter(\n (bundle) =>\n !input.onlySkillNames || input.onlySkillNames.includes(bundle.skillName),\n );\n const written: string[] = [];\n for (const agent of input.skillsAgents) {\n const root = builtInSkillsRootForAgent(agent, input.scope, input.baseDir);\n const commandsRoot = builtInCommandsRootForAgent(\n agent,\n input.scope,\n input.baseDir,\n );\n for (const bundle of bundles) {\n const dir = path.join(root, bundle.skillName);\n written.push(dir);\n const command = slashCommandForBuiltInSkill(bundle.skillName);\n if (command) {\n const commandPath = path.join(commandsRoot, `${bundle.skillName}.md`);\n written.push(commandPath);\n }\n }\n }\n return written;\n}\n\nfunction installBuiltInInstructions(\n input: BuiltInInstructionInstallInput,\n): string[] {\n const bundles = Object.values(\n skillFilesForBuiltIn(input.appSkillId, {\n planMode: input.planMode,\n mcpUrl: input.mcpUrl,\n }),\n ).filter(\n (bundle) =>\n !input.onlySkillNames || input.onlySkillNames.includes(bundle.skillName),\n );\n const written = builtInInstructionPaths(input);\n if (input.dryRun) return written;\n\n for (const agent of input.skillsAgents) {\n const root = builtInSkillsRootForAgent(agent, input.scope, input.baseDir);\n const commandsRoot = builtInCommandsRootForAgent(\n agent,\n input.scope,\n input.baseDir,\n );\n for (const bundle of bundles) {\n writeSkillFolder(path.join(root, bundle.skillName), bundle);\n const command = slashCommandForBuiltInSkill(bundle.skillName);\n if (command) {\n const commandPath = path.join(commandsRoot, `${bundle.skillName}.md`);\n fs.mkdirSync(path.dirname(commandPath), { recursive: true });\n fs.writeFileSync(commandPath, command, \"utf-8\");\n }\n }\n }\n return written;\n}\n\ninterface InstallPathSnapshot {\n target: string;\n backup: string;\n existed: boolean;\n}\n\nfunction snapshotInstallPaths(\n targets: string[],\n backupRoot: string,\n): InstallPathSnapshot[] {\n return [...new Set(targets)].map((target, index) => {\n const backup = path.join(backupRoot, `snapshot-${index}`);\n const existed = fs.existsSync(target);\n if (existed) fs.cpSync(target, backup, { recursive: true });\n return { target, backup, existed };\n });\n}\n\nfunction removeEmptyParents(start: string, boundary: string): void {\n let current = path.resolve(start);\n const stop = path.resolve(boundary);\n while (current !== stop && current.startsWith(`${stop}${path.sep}`)) {\n if (!fs.existsSync(current) || fs.readdirSync(current).length > 0) return;\n fs.rmdirSync(current);\n current = path.dirname(current);\n }\n}\n\nfunction restoreInstallPaths(\n snapshots: InstallPathSnapshot[],\n boundary: string,\n): void {\n for (const snapshot of snapshots.toReversed()) {\n fs.rmSync(snapshot.target, { recursive: true, force: true });\n if (snapshot.existed) {\n fs.mkdirSync(path.dirname(snapshot.target), { recursive: true });\n fs.cpSync(snapshot.backup, snapshot.target, { recursive: true });\n }\n }\n for (const snapshot of snapshots) {\n if (!snapshot.existed) {\n removeEmptyParents(path.dirname(snapshot.target), boundary);\n }\n }\n}\n\nfunction listSkillFolderFiles(dir: string): Record<string, string> {\n const out: Record<string, string> = {};\n const walk = (current: string, prefix = \"\") => {\n for (const entry of fs.readdirSync(current, { withFileTypes: true })) {\n const rel = prefix ? `${prefix}/${entry.name}` : entry.name;\n const abs = path.join(current, entry.name);\n if (entry.isDirectory()) {\n walk(abs, rel);\n continue;\n }\n if (!entry.isFile() || rel === AGENT_NATIVE_SKILL_METADATA_FILE) continue;\n out[rel] = fs.readFileSync(abs, \"utf-8\");\n }\n };\n if (fs.existsSync(dir)) walk(dir);\n return out;\n}\n\nfunction readSkillInstallMetadata(\n dir: string,\n): SkillInstallMetadata | undefined {\n const file = path.join(dir, AGENT_NATIVE_SKILL_METADATA_FILE);\n if (!fs.existsSync(file)) return undefined;\n try {\n const parsed = JSON.parse(fs.readFileSync(file, \"utf-8\"));\n if (\n parsed &&\n parsed.source === \"agent-native\" &&\n typeof parsed.skillName === \"string\" &&\n typeof parsed.contentHash === \"string\"\n ) {\n return parsed as SkillInstallMetadata;\n }\n } catch {}\n return undefined;\n}\n\nfunction homeDir(): string | undefined {\n return process.env.HOME || os.homedir();\n}\n\nfunction skillSearchRoots(input: {\n baseDir: string;\n clients: SkillInstructionClientId[];\n scopes: Array<\"project\" | \"user\">;\n}): Array<{\n root: string;\n scope: \"project\" | \"user\";\n client: string;\n}> {\n const roots: Array<{\n root: string;\n scope: \"project\" | \"user\";\n client: string;\n }> = [];\n const clientSet = new Set<SkillInstructionClientId>(input.clients);\n const includeAll = input.clients.length === 0;\n const hasClient = (client: SkillInstructionClientId) =>\n includeAll || clientSet.has(client);\n const add = (\n root: string | undefined,\n scope: \"project\" | \"user\",\n client: string,\n ) => {\n if (root) roots.push({ root, scope, client });\n };\n\n if (input.scopes.includes(\"project\")) {\n if (hasClient(\"codex\")) {\n add(path.join(input.baseDir, \".agents\", \"skills\"), \"project\", \"codex\");\n }\n if (hasClient(\"claude-code\") || hasClient(\"claude-code-cli\")) {\n add(\n path.join(input.baseDir, \".claude\", \"skills\"),\n \"project\",\n \"claude-code\",\n );\n }\n if (hasClient(\"pi\")) {\n add(path.join(input.baseDir, \".agents\", \"skills\"), \"project\", \"pi\");\n add(path.join(input.baseDir, \".pi\", \"skills\"), \"project\", \"pi\");\n }\n if (includeAll) add(path.join(input.baseDir, \"skills\"), \"project\", \"repo\");\n }\n\n if (input.scopes.includes(\"user\")) {\n const home = homeDir();\n if (hasClient(\"codex\")) {\n add(\n process.env.CODEX_HOME\n ? path.join(process.env.CODEX_HOME, \"skills\")\n : undefined,\n \"user\",\n \"codex\",\n );\n add(\n home ? path.join(home, \".codex\", \"skills\") : undefined,\n \"user\",\n \"codex\",\n );\n }\n if (hasClient(\"claude-code\") || hasClient(\"claude-code-cli\")) {\n add(\n home ? path.join(home, \".claude\", \"skills\") : undefined,\n \"user\",\n \"claude-code\",\n );\n }\n if (hasClient(\"pi\")) {\n const piHome =\n process.env.PI_CODING_AGENT_DIR ||\n (home ? path.join(home, \".pi\", \"agent\") : undefined);\n add(\n home ? path.join(home, \".agents\", \"skills\") : undefined,\n \"user\",\n \"pi\",\n );\n add(piHome ? path.join(piHome, \"skills\") : undefined, \"user\", \"pi\");\n }\n }\n\n const seen = new Set<string>();\n return roots.filter((entry) => {\n const key = `${entry.scope}:${entry.client}:${path.resolve(entry.root)}`;\n if (seen.has(key)) return false;\n seen.add(key);\n return true;\n });\n}\n\nconst SCAFFOLD_GUIDANCE_TARGETS = new Set([\n \"scaffold\",\n \"generated\",\n \"generated-app\",\n \"generated-workspace\",\n \"workspace\",\n \"workspace-core\",\n \"framework-guidance\",\n]);\n\nfunction isScaffoldGuidanceTarget(value: string | undefined): boolean {\n if (!value) return false;\n return SCAFFOLD_GUIDANCE_TARGETS.has(value.trim().toLowerCase());\n}\n\nfunction corePackageRootDir(): string {\n const here = path.dirname(fileURLToPath(import.meta.url));\n return path.resolve(here, \"../..\");\n}\n\nfunction bundledScaffoldSkillsDir(\n templateName: ScaffoldGuidanceState[\"templateName\"],\n): string {\n return path.join(\n corePackageRootDir(),\n \"src\",\n \"templates\",\n templateName,\n \".agents\",\n \"skills\",\n );\n}\n\nfunction readJsonRecord(file: string): Record<string, unknown> | undefined {\n try {\n const parsed = JSON.parse(fs.readFileSync(file, \"utf-8\"));\n if (parsed && typeof parsed === \"object\" && !Array.isArray(parsed)) {\n return parsed as Record<string, unknown>;\n }\n } catch {}\n return undefined;\n}\n\nfunction readPackageJson(dir: string): Record<string, unknown> | undefined {\n return readJsonRecord(path.join(dir, \"package.json\"));\n}\n\nfunction packageName(pkg: Record<string, unknown> | undefined): string | null {\n return typeof pkg?.name === \"string\" ? pkg.name : null;\n}\n\nfunction workspaceCorePackageName(\n pkg: Record<string, unknown> | undefined,\n): string | null {\n const agentNative = pkg?.[\"agent-native\"];\n if (\n agentNative &&\n typeof agentNative === \"object\" &&\n !Array.isArray(agentNative) &&\n typeof (agentNative as Record<string, unknown>).workspaceCore === \"string\"\n ) {\n return (agentNative as Record<string, string>).workspaceCore;\n }\n return null;\n}\n\nfunction hasAgentNativeCoreDependency(\n pkg: Record<string, unknown> | undefined,\n): boolean {\n for (const field of [\"dependencies\", \"devDependencies\", \"peerDependencies\"]) {\n const deps = pkg?.[field];\n if (\n deps &&\n typeof deps === \"object\" &&\n !Array.isArray(deps) &&\n \"@agent-native/core\" in deps\n ) {\n return true;\n }\n }\n return false;\n}\n\nfunction markedScaffoldGuidanceTemplate(\n pkg: Record<string, unknown> | undefined,\n): \"headless\" | \"default\" | undefined {\n const agentNative = pkg?.[\"agent-native\"];\n if (\n !agentNative ||\n typeof agentNative !== \"object\" ||\n Array.isArray(agentNative)\n ) {\n return undefined;\n }\n const scaffold = (agentNative as Record<string, unknown>).scaffold;\n if (!scaffold || typeof scaffold !== \"object\" || Array.isArray(scaffold)) {\n return undefined;\n }\n const frameworkSkills = (scaffold as Record<string, unknown>).frameworkSkills;\n return frameworkSkills === \"headless\" || frameworkSkills === \"default\"\n ? frameworkSkills\n : undefined;\n}\n\nfunction findWorkspaceCorePackageDir(\n workspaceRoot: string,\n workspaceCoreName: string,\n): string | undefined {\n const packagesDir = path.join(workspaceRoot, \"packages\");\n if (!fs.existsSync(packagesDir)) return undefined;\n for (const entry of fs.readdirSync(packagesDir, { withFileTypes: true })) {\n if (!entry.isDirectory()) continue;\n const candidate = path.join(packagesDir, entry.name);\n if (packageName(readPackageJson(candidate)) === workspaceCoreName) {\n return candidate;\n }\n }\n const fallback = path.join(workspaceRoot, \"packages\", \"shared\");\n return fs.existsSync(path.join(fallback, \"package.json\"))\n ? fallback\n : undefined;\n}\n\nfunction findGeneratedWorkspace(startDir: string):\n | {\n workspaceRoot: string;\n sharedPackageDir: string;\n }\n | undefined {\n let current = path.resolve(startDir);\n while (true) {\n const pkg = readPackageJson(current);\n const workspaceCoreName = workspaceCorePackageName(pkg);\n if (workspaceCoreName && fs.existsSync(path.join(current, \"apps\"))) {\n const sharedPackageDir = findWorkspaceCorePackageDir(\n current,\n workspaceCoreName,\n );\n if (sharedPackageDir) {\n return { workspaceRoot: current, sharedPackageDir };\n }\n }\n const parent = path.dirname(current);\n if (parent === current) break;\n current = parent;\n }\n return undefined;\n}\n\nfunction detectStandaloneScaffoldTemplate(\n projectRoot: string,\n): \"headless\" | \"default\" | undefined {\n const pkg = readPackageJson(projectRoot);\n if (!hasAgentNativeCoreDependency(pkg)) return undefined;\n if (!fs.existsSync(path.join(projectRoot, \".agents\", \"skills\"))) {\n return undefined;\n }\n\n const markedTemplate = markedScaffoldGuidanceTemplate(pkg);\n if (markedTemplate) return markedTemplate;\n\n const hasAppDir = fs.existsSync(path.join(projectRoot, \"app\"));\n const hasHeadlessHello = fs.existsSync(\n path.join(projectRoot, \"actions\", \"hello.ts\"),\n );\n if (!hasAppDir && hasHeadlessHello) return \"headless\";\n\n const looksLikeDefaultTemplate =\n fs.existsSync(path.join(projectRoot, \"app\", \"routes\", \"database.tsx\")) &&\n fs.existsSync(path.join(projectRoot, \"app\", \"routes\", \"_index.tsx\")) &&\n fs.existsSync(path.join(projectRoot, \"actions\", \"view-screen.ts\"));\n return looksLikeDefaultTemplate ? \"default\" : undefined;\n}\n\nfunction listImmediateSkillDirs(dir: string): string[] {\n if (!fs.existsSync(dir)) return [];\n return fs\n .readdirSync(dir, { withFileTypes: true })\n .filter((entry) => entry.isDirectory())\n .map((entry) => entry.name)\n .sort();\n}\n\nfunction skillDirContentsMatch(sourceDir: string, targetDir: string): boolean {\n const expected = listSkillFolderFiles(sourceDir);\n const actual = listSkillFolderFiles(targetDir);\n const expectedFiles = Object.keys(expected).sort();\n const actualFiles = Object.keys(actual).sort();\n if (expectedFiles.length !== actualFiles.length) return false;\n for (let i = 0; i < expectedFiles.length; i += 1) {\n if (expectedFiles[i] !== actualFiles[i]) return false;\n }\n return expectedFiles.every((file) => expected[file] === actual[file]);\n}\n\nfunction scaffoldGuidanceCurrent(\n sourceRoot: string,\n targetRoot: string,\n): boolean {\n const skills = listImmediateSkillDirs(sourceRoot);\n if (skills.length === 0) return false;\n return skills.every((skill) =>\n skillDirContentsMatch(\n path.join(sourceRoot, skill),\n path.join(targetRoot, skill),\n ),\n );\n}\n\nfunction collectScaffoldGuidanceStates(\n parsed: ParsedSkillsArgs,\n options: RunSkillsOptions,\n): ScaffoldGuidanceState[] {\n if (parsed.target && !isScaffoldGuidanceTarget(parsed.target)) return [];\n if (parsed.scopeExplicit && parsed.scope !== \"project\") return [];\n\n const baseDir = path.resolve(options.baseDir ?? process.cwd());\n const workspace = findGeneratedWorkspace(baseDir);\n if (workspace) {\n const sourcePath = bundledScaffoldSkillsDir(\"workspace-core\");\n const targetPath = path.join(\n workspace.sharedPackageDir,\n \".agents\",\n \"skills\",\n );\n if (!fs.existsSync(sourcePath)) return [];\n return [\n {\n kind: \"workspace-core\",\n displayName: \"Generated workspace framework skills\",\n templateName: \"workspace-core\",\n path: targetPath,\n sourcePath,\n projectRoot: workspace.workspaceRoot,\n workspaceRoot: workspace.workspaceRoot,\n sharedPackageDir: workspace.sharedPackageDir,\n current: scaffoldGuidanceCurrent(sourcePath, targetPath),\n skillCount: listImmediateSkillDirs(sourcePath).length,\n },\n ];\n }\n\n const templateName = detectStandaloneScaffoldTemplate(baseDir);\n if (!templateName) return [];\n const sourcePath = bundledScaffoldSkillsDir(templateName);\n const targetPath = path.join(baseDir, \".agents\", \"skills\");\n if (!fs.existsSync(sourcePath)) return [];\n return [\n {\n kind: \"standalone\",\n displayName: `Generated ${templateName} app framework skills`,\n templateName,\n path: targetPath,\n sourcePath,\n projectRoot: baseDir,\n current: scaffoldGuidanceCurrent(sourcePath, targetPath),\n skillCount: listImmediateSkillDirs(sourcePath).length,\n },\n ];\n}\n\nfunction copyScaffoldGuidanceSkills(\n sourceRoot: string,\n targetRoot: string,\n): void {\n fs.mkdirSync(targetRoot, { recursive: true });\n for (const skill of listImmediateSkillDirs(sourceRoot)) {\n const targetSkillDir = path.join(targetRoot, skill);\n if (\n fs.existsSync(targetSkillDir) &&\n fs.lstatSync(targetSkillDir).isSymbolicLink()\n ) {\n continue;\n }\n fs.rmSync(targetSkillDir, { recursive: true, force: true });\n fs.cpSync(path.join(sourceRoot, skill), targetSkillDir, {\n recursive: true,\n });\n }\n}\n\nfunction updateScaffoldGuidanceStates(\n states: ScaffoldGuidanceState[],\n dryRun: boolean,\n): ScaffoldGuidanceState[] {\n const updated: ScaffoldGuidanceState[] = [];\n for (const state of states) {\n if (state.current) continue;\n if (!dryRun) {\n copyScaffoldGuidanceSkills(state.sourcePath, state.path);\n }\n updated.push({\n ...state,\n current: !dryRun,\n });\n }\n return updated;\n}\n\nfunction ensureWorkspaceRootSkillsLink(\n workspaceRoot: string,\n sharedPackageDir: string,\n): void {\n const sharedSkillsDir = path.join(sharedPackageDir, \".agents\", \"skills\");\n if (!fs.existsSync(sharedSkillsDir)) return;\n\n const agentsDir = path.join(workspaceRoot, \".agents\");\n const linkPath = path.join(agentsDir, \"skills\");\n const target = path.relative(agentsDir, sharedSkillsDir);\n\n fs.mkdirSync(agentsDir, { recursive: true });\n try {\n const stat = fs.lstatSync(linkPath);\n if (stat.isSymbolicLink()) {\n if (fs.readlinkSync(linkPath) === target) return;\n fs.unlinkSync(linkPath);\n } else {\n copyScaffoldGuidanceSkills(sharedSkillsDir, linkPath);\n return;\n }\n } catch {}\n\n try {\n fs.symlinkSync(\n target,\n linkPath,\n process.platform === \"win32\" ? \"junction\" : \"dir\",\n );\n } catch {\n try {\n fs.cpSync(sharedSkillsDir, linkPath, { recursive: true });\n } catch {}\n }\n}\n\nfunction refreshCopiedClaudeSkills(projectRoot: string): void {\n const agentsSkillsDir = path.join(projectRoot, \".agents\", \"skills\");\n const claudeSkillsDir = path.join(projectRoot, \".claude\", \"skills\");\n if (!fs.existsSync(agentsSkillsDir) || !fs.existsSync(claudeSkillsDir)) {\n return;\n }\n try {\n if (fs.lstatSync(claudeSkillsDir).isSymbolicLink()) return;\n copyScaffoldGuidanceSkills(agentsSkillsDir, claudeSkillsDir);\n } catch {}\n}\n\nfunction repairScaffoldAgentLinks(states: ScaffoldGuidanceState[]): void {\n const seen = new Set<string>();\n for (const state of states) {\n if (state.workspaceRoot && state.sharedPackageDir) {\n const key = `workspace:${state.workspaceRoot}`;\n if (seen.has(key)) continue;\n seen.add(key);\n ensureWorkspaceRootSkillsLink(\n state.workspaceRoot,\n state.sharedPackageDir,\n );\n setupAgentSymlinks(state.workspaceRoot);\n refreshCopiedClaudeSkills(state.workspaceRoot);\n setupAgentSymlinks(state.sharedPackageDir);\n refreshCopiedClaudeSkills(state.sharedPackageDir);\n const appsDir = path.join(state.workspaceRoot, \"apps\");\n if (fs.existsSync(appsDir)) {\n for (const entry of fs.readdirSync(appsDir, { withFileTypes: true })) {\n if (!entry.isDirectory()) continue;\n const appDir = path.join(appsDir, entry.name);\n if (fs.existsSync(path.join(appDir, \"package.json\"))) {\n setupAgentSymlinks(appDir);\n refreshCopiedClaudeSkills(appDir);\n }\n }\n }\n continue;\n }\n\n const key = `standalone:${state.projectRoot}`;\n if (seen.has(key)) continue;\n seen.add(key);\n setupAgentSymlinks(state.projectRoot);\n refreshCopiedClaudeSkills(state.projectRoot);\n }\n}\n\nfunction targetIdsForStatus(parsed: ParsedSkillsArgs): BuiltInAppSkillId[] {\n if (isScaffoldGuidanceTarget(parsed.target)) return [];\n if (!parsed.target) {\n return (Object.keys(BUILT_IN_APP_SKILLS) as BuiltInAppSkillId[]).filter(\n (id) => !isLocalOnlyBuiltInSkill(BUILT_IN_APP_SKILLS[id]),\n );\n }\n const known = normalizeKnownSkillTarget(parsed.target);\n if (!known) {\n throw new Error(\n `Unknown built-in skill: ${parsed.target}. Run \"npx @agent-native/core@latest skills list\".`,\n );\n }\n if (isLocalOnlyBuiltInSkill(BUILT_IN_APP_SKILLS[known])) {\n throw new Error(\n `${BUILT_IN_APP_SKILLS[known].manifest.displayName} is installed as a local command and cannot be refreshed with skills update yet.`,\n );\n }\n return [known];\n}\n\nfunction scopeFilterForStatus(\n parsed: ParsedSkillsArgs,\n): Array<\"project\" | \"user\"> {\n return parsed.scopeExplicit\n ? [parsed.scope as \"project\" | \"user\"]\n : [\"project\", \"user\"];\n}\n\nfunction clientFilterForStatus(\n parsed: ParsedSkillsArgs,\n): SkillInstructionClientId[] {\n return parsed.clientExplicit ? resolveSkillsClientArg(parsed.client) : [];\n}\n\nfunction collectSkillInstallStates(\n parsed: ParsedSkillsArgs,\n options: RunSkillsOptions,\n): SkillInstallState[] {\n const appSkillIds = targetIdsForStatus(parsed);\n const defaultLatest = latestSkillBundlesForTargets(appSkillIds);\n const roots = skillSearchRoots({\n baseDir: options.baseDir ?? process.cwd(),\n clients: clientFilterForStatus(parsed),\n scopes: scopeFilterForStatus(parsed),\n });\n const states: SkillInstallState[] = [];\n const seenDirs = new Set<string>();\n\n for (const root of roots) {\n for (const bundle of Object.values(defaultLatest)) {\n const dir = path.join(root.root, bundle.skillName);\n const resolvedDir = path.resolve(dir);\n if (seenDirs.has(resolvedDir) || !fs.existsSync(dir)) continue;\n if (!fs.existsSync(path.join(dir, \"SKILL.md\"))) continue;\n seenDirs.add(resolvedDir);\n const files = listSkillFolderFiles(dir);\n const metadata = readSkillInstallMetadata(dir);\n const stateBundle =\n skillFilesForBuiltIn(bundle.appSkillId, {\n planMode: metadata?.planMode,\n mcpUrl: metadata?.mcpUrl,\n })[bundle.skillName] ?? bundle;\n const installedHash =\n Object.keys(files).length > 0 ? stableSkillHash(files) : null;\n states.push({\n appSkillId: stateBundle.appSkillId,\n displayName: stateBundle.displayName,\n skillName: stateBundle.skillName,\n path: dir,\n root: root.root,\n scope: root.scope,\n client: root.client,\n latestHash: stateBundle.contentHash,\n installedHash,\n metadataHash: metadata?.contentHash,\n current: installedHash === stateBundle.contentHash,\n managed: metadata?.source === \"agent-native\",\n planMode: metadata?.planMode,\n mcpUrl: metadata?.mcpUrl,\n });\n }\n }\n\n return states.sort((a, b) =>\n `${a.skillName}:${a.path}`.localeCompare(`${b.skillName}:${b.path}`),\n );\n}\n\nfunction updateSkillInstallStates(\n states: SkillInstallState[],\n dryRun: boolean,\n): SkillInstallState[] {\n const updated: SkillInstallState[] = [];\n for (const state of states) {\n if (state.current && state.managed) continue;\n const bundle = skillFilesForBuiltIn(state.appSkillId, {\n planMode: state.planMode,\n mcpUrl: state.mcpUrl,\n })[state.skillName];\n if (!bundle) continue;\n if (!dryRun) writeSkillFolder(state.path, bundle);\n updated.push({\n ...state,\n current: !dryRun,\n installedHash: dryRun ? state.installedHash : bundle.contentHash,\n metadataHash: dryRun ? state.metadataHash : bundle.contentHash,\n });\n }\n return updated;\n}\n\nfunction normalizeClientIds(values: unknown): ClientId[] {\n if (!Array.isArray(values)) return [];\n const seen = new Set<ClientId>();\n const out: ClientId[] = [];\n for (const value of values) {\n if (typeof value !== \"string\") continue;\n const id = value.toLowerCase();\n if (!(CLIENTS as string[]).includes(id)) continue;\n const client = id as ClientId;\n if (seen.has(client)) continue;\n seen.add(client);\n out.push(client);\n }\n return out;\n}\n\nfunction isMcpClientId(value: SkillInstructionClientId): value is ClientId {\n return (CLIENTS as string[]).includes(value);\n}\n\nfunction normalizeSkillInstructionClientIds(\n values: unknown,\n): SkillInstructionClientId[] {\n if (!Array.isArray(values)) return [];\n const seen = new Set<SkillInstructionClientId>();\n const out: SkillInstructionClientId[] = [];\n for (const value of values) {\n if (typeof value !== \"string\") continue;\n const id = value.toLowerCase();\n let normalized: SkillInstructionClientId | null = null;\n if (id === \"pi\") {\n normalized = \"pi\";\n } else if ((CLIENTS as string[]).includes(id)) {\n const client = id as ClientId;\n normalized = client === \"claude-code-cli\" ? \"claude-code\" : client;\n }\n if (!normalized) continue;\n if (seen.has(normalized)) continue;\n seen.add(normalized);\n out.push(normalized);\n }\n return out;\n}\n\nfunction resolveSkillsClientArg(\n client: string,\n installsMcp = false,\n): SkillInstructionClientId[] {\n if (installsMcp)\n return normalizeSkillInstructionClientIds(resolveClients(client));\n const values = client.split(\",\").flatMap((raw) => {\n const id = raw.trim().toLowerCase();\n if (!id) return [];\n if (id === \"all\") return SKILL_INSTRUCTION_CLIENTS;\n if (id === \"pi\") return [\"pi\" as const];\n return resolveClients(id);\n });\n return normalizeSkillInstructionClientIds(values);\n}\n\nfunction skillsClients(installsMcp: boolean): SkillInstructionClientId[] {\n return installsMcp ? SKILLS_CLIENTS : SKILL_INSTRUCTION_PROMPT_CLIENTS;\n}\n\nfunction filterSkillsClients(\n clients: SkillInstructionClientId[],\n installsMcp: boolean,\n): SkillInstructionClientId[] {\n if (installsMcp) {\n return clients.filter(\n (client): client is ClientId =>\n isMcpClientId(client) && SKILLS_CLIENTS.includes(client),\n );\n }\n // Instructions/local-files mode: keep the first-class instruction writers, and\n // map shared-`.agents` readers (cursor/opencode/github-copilot/cowork) onto\n // the shared-agents install (codex) so they install the skills they read\n // rather than being silently dropped to an empty set.\n const out: SkillInstructionClientId[] = [];\n for (const client of clients) {\n const resolved = SKILL_INSTRUCTION_CLIENTS.includes(client)\n ? client\n : SHARED_AGENTS_READER_CLIENTS.has(client)\n ? \"codex\"\n : undefined;\n if (resolved && !out.includes(resolved)) out.push(resolved);\n }\n return out;\n}\n\nfunction clientPromptOptions(\n installsMcp: boolean,\n): SkillsClientPromptContext[\"options\"] {\n return skillsClients(installsMcp).map((client) => ({\n value: client,\n label:\n installsMcp && isMcpClientId(client)\n ? CLIENT_LABELS[client]\n : SKILL_INSTRUCTION_CLIENT_LABELS[client],\n hint:\n installsMcp && isMcpClientId(client)\n ? CLIENT_HINTS[client]\n : SKILL_INSTRUCTION_CLIENT_HINTS[client],\n }));\n}\n\nconst DEFAULT_PUBLIC_SKILLS_SOURCE = \"BuilderIO/skills\";\nconst PUBLIC_SKILL_TARGET_PREFIX = \"public-skills:\";\n\nconst BUILT_IN_SKILL_PROMPT_OPTIONS: SkillsTargetPromptContext[\"options\"] = [\n {\n value: \"visual-plan\",\n label: \"visual-plan\",\n hint: \"Rich interactive visual plan that turns ordinary text plans into diagrams, file maps, annotated code, questions, and UI/prototype review.\",\n },\n {\n value: \"visual-recap\",\n label: \"visual-recap\",\n hint: \"Interactive visual recap that maps PRs/diffs with diagrams, annotated diffs, API/schema summaries, and review notes.\",\n },\n {\n value: \"visualize-repo\",\n label: \"visualize-repo\",\n hint: \"Local repo visual docs workspace for APIs, components, models, flows, comments, and coding-agent handoff.\",\n },\n {\n value: \"assets\",\n label: \"assets\",\n hint: BUILT_IN_APP_SKILLS.assets.manifest.description,\n },\n {\n value: \"content\",\n label: \"content\",\n hint: BUILT_IN_APP_SKILLS.content.manifest.description,\n },\n {\n value: \"rewind\",\n label: \"rewind\",\n hint: BUILT_IN_APP_SKILLS.rewind.manifest.description,\n },\n {\n value: \"design-exploration\",\n label: \"design-exploration\",\n hint: BUILT_IN_APP_SKILLS.design.manifest.description,\n },\n {\n value: \"visual-edit\",\n label: \"visual-edit\",\n hint: \"Open a running local app in Design overview mode as URL-backed iframe screens.\",\n },\n {\n value: \"context-xray\",\n label: \"context-xray\",\n hint: BUILT_IN_APP_SKILLS[\"context-xray\"].manifest.description,\n },\n];\n\nconst DEFAULT_SKILL_PROMPT_TARGETS = [\n \"visual-plan\",\n \"visual-recap\",\n \"visualize-repo\",\n];\n\nfunction hiddenBuiltInSkillTargets(options: RunSkillsOptions): Set<string> {\n return new Set(\n (options.hiddenBuiltInSkillTargets ?? []).map((target) =>\n target.trim().toLowerCase(),\n ),\n );\n}\n\nfunction builtInSkillPromptOptions(\n options: RunSkillsOptions,\n): SkillsTargetPromptContext[\"options\"] {\n const hidden = hiddenBuiltInSkillTargets(options);\n return BUILT_IN_SKILL_PROMPT_OPTIONS.filter(\n (entry) => !hidden.has(entry.value),\n );\n}\n\nfunction publicSkillEntries(\n options: RunSkillsOptions,\n): PublicSkillCatalogEntry[] {\n if (options.catalogMode !== \"all\") return [];\n const seen = new Set<string>();\n return (options.publicSkillEntries ?? [])\n .map((entry) => ({\n name: entry.name.trim().toLowerCase(),\n description: entry.description,\n }))\n .filter((entry) => {\n if (!entry.name || isKnownSkill(entry.name) || seen.has(entry.name)) {\n return false;\n }\n seen.add(entry.name);\n return true;\n })\n .sort((a, b) => a.name.localeCompare(b.name));\n}\n\nfunction publicSkillNames(options: RunSkillsOptions): Set<string> {\n return new Set(publicSkillEntries(options).map((entry) => entry.name));\n}\n\nfunction publicSkillPromptOptions(\n options: RunSkillsOptions,\n): SkillsTargetPromptContext[\"options\"] {\n return publicSkillEntries(options).map((entry) => ({\n value: entry.name,\n label: entry.name,\n hint:\n entry.description ?? \"Public skill from the BuilderIO skills catalog.\",\n }));\n}\n\nfunction skillPromptOptions(\n options: RunSkillsOptions = {},\n): SkillsTargetPromptContext[\"options\"] {\n return [\n ...builtInSkillPromptOptions(options),\n ...publicSkillPromptOptions(options),\n ];\n}\n\nfunction defaultSkillPromptTargets(options: RunSkillsOptions): string[] {\n const available = new Set(\n skillPromptOptions(options).map((entry) => entry.value),\n );\n return DEFAULT_SKILL_PROMPT_TARGETS.filter((target) => available.has(target));\n}\n\nfunction publicSkillSelectionTarget(skillNames: string[]): string {\n return `${PUBLIC_SKILL_TARGET_PREFIX}${skillNames.join(\",\")}`;\n}\n\nfunction publicSkillSelectionNames(target: string): string[] | null {\n if (!target.startsWith(PUBLIC_SKILL_TARGET_PREFIX)) return null;\n return target\n .slice(PUBLIC_SKILL_TARGET_PREFIX.length)\n .split(\",\")\n .map((name) => name.trim().toLowerCase())\n .filter(Boolean);\n}\n\nfunction prVisualRecapWorkflowPath(baseDir: string): string {\n return path.join(baseDir, \".github\", \"workflows\", \"pr-visual-recap.yml\");\n}\n\nfunction prVisualRecapWorkflowDisplayPath(): string {\n return path.join(\".github\", \"workflows\", \"pr-visual-recap.yml\");\n}\n\nconst PR_VISUAL_RECAP_DOCS_URL =\n \"https://www.agent-native.com/docs/pr-visual-recap\";\n\nfunction prVisualRecapInstallCommand(): string {\n return \"npx @agent-native/core@latest skills add visual-recap --with-github-action\";\n}\n\nfunction prVisualRecapSetupCommand(): string {\n return \"npx @agent-native/core@latest recap setup\";\n}\n\nasync function promptForGithubAction(\n context: SkillsGithubActionPromptContext,\n): Promise<boolean | null> {\n const clack = await import(\"@clack/prompts\");\n const result = await clack.confirm({\n message:\n \"Optional: add automatic PR Visual Recaps? (GitHub Action)\\n\" +\n \" Posts a human-friendly recap on every pull request — a high-altitude\\n\" +\n \" overview of what the PR does, with annotated code, diagrams, and\\n\" +\n \" before/after notes instead of a raw diff.\\n\" +\n ` Learn more: ${PR_VISUAL_RECAP_DOCS_URL}\\n` +\n ` Writes ${context.workflowPath}; ${context.setupCommand} finishes the GitHub secrets.`,\n initialValue: false,\n });\n if (clack.isCancel(result)) {\n clack.cancel(\"Skipped PR Visual Recap workflow.\");\n return null;\n }\n return Boolean(result);\n}\n\nfunction shouldPrompt(parsed: ParsedSkillsArgs, options: RunSkillsOptions) {\n if (parsed.yes || parsed.printJson) return false;\n if (options.isInteractive) return options.isInteractive();\n if (process.env.AGENT_NATIVE_NO_PROMPT === \"1\") return false;\n if (process.env.CI === \"true\") return false;\n return !!process.stdin.isTTY && !!process.stdout.isTTY;\n}\n\nasync function promptForClients(\n context: SkillsClientPromptContext,\n): Promise<SkillInstructionClientId[] | null> {\n const clack = await import(\"@clack/prompts\");\n const message = context.installsMcp\n ? \"Install the MCP connector for which clients?\\n\" +\n \" (space toggles, enter confirms; saved for next time)\"\n : \"Where should the skill instructions be written?\\n\" +\n \" (space toggles, enter confirms; saved for next time)\";\n const result = await clack.multiselect({\n message,\n options: context.options,\n initialValues: context.initialClients,\n required: true,\n });\n if (clack.isCancel(result)) {\n clack.cancel(\"Cancelled.\");\n return null;\n }\n return normalizeSkillInstructionClientIds(result);\n}\n\nasync function promptForScope(\n context: SkillsScopePromptContext,\n): Promise<\"project\" | \"user\" | null> {\n const clack = await import(\"@clack/prompts\");\n const result = await clack.select({\n message: \"Where do you want to install these skills?\",\n options: [\n {\n value: \"project\",\n label: \"Project\",\n hint: \"This repo only (.agents / .claude in the current directory) — committed with your project\",\n },\n {\n value: \"user\",\n label: \"User\",\n hint: \"Your home directory (~/.codex, ~/.claude) — available across all projects\",\n },\n ],\n initialValue: context.initialScope,\n });\n if (clack.isCancel(result)) {\n clack.cancel(\"Cancelled.\");\n return null;\n }\n return result === \"project\" ? \"project\" : \"user\";\n}\n\nasync function promptForPlanMode(\n context: SkillsPlanModePromptContext,\n): Promise<PlanInstallMode | null> {\n const clack = await import(\"@clack/prompts\");\n const result = await clack.select({\n message: \"Where should visual plans and recaps live?\",\n options: [\n {\n value: \"hosted\",\n label: \"Hosted plans, shareable links (recommended)\",\n hint: \"100% free and open source. Supports comments, browser editor, and sharing. Requires one-time browser sign-in.\",\n },\n {\n value: \"local-files\",\n label: \"Local files only\",\n hint: \"Writes local MDX, starts a localhost bridge, and opens the hosted Plan UI. No sharing, all local.\",\n },\n {\n value: \"self-hosted\",\n label: \"Self-hosted/custom URL\",\n hint: \"Connect to your own Plan app or local dev tunnel.\",\n },\n ],\n initialValue: context.initialMode,\n });\n if (clack.isCancel(result)) {\n clack.cancel(\"Cancelled.\");\n return null;\n }\n return normalizePlanInstallMode(String(result));\n}\n\nasync function promptForPlanMcpUrl(): Promise<string | null> {\n const clack = await import(\"@clack/prompts\");\n const result = await clack.text({\n message: \"Plan app URL or MCP URL\",\n placeholder: \"https://my-plan-app.example.com\",\n validate(value) {\n try {\n resolveMcpUrlOverride(value);\n return undefined;\n } catch (err: any) {\n return err?.message ?? \"Enter a valid http:// or https:// URL.\";\n }\n },\n });\n if (clack.isCancel(result)) {\n clack.cancel(\"Cancelled.\");\n return null;\n }\n return String(result).trim();\n}\n\nasync function promptForUpdateInstructions(): Promise<boolean | null> {\n const clack = await import(\"@clack/prompts\");\n const result = await clack.confirm({\n message:\n \"Add managed AGENTS.md / CLAUDE.md instructions for always-on skill behavior?\",\n initialValue: true,\n });\n if (clack.isCancel(result)) {\n clack.cancel(\"Skipped managed instruction updates.\");\n return null;\n }\n return Boolean(result);\n}\n\nasync function promptForSkills(\n context: SkillsTargetPromptContext,\n): Promise<string[] | null> {\n const clack = await import(\"@clack/prompts\");\n const result = await clack.multiselect({\n message:\n \"Which Agent Native skills do you want to install?\\n\" +\n \" (space toggles, enter confirms)\",\n options: context.options,\n initialValues: context.initialTargets,\n required: true,\n });\n if (clack.isCancel(result)) {\n clack.cancel(\"Cancelled.\");\n return null;\n }\n if (!Array.isArray(result)) return [];\n return result.filter((value): value is string => typeof value === \"string\");\n}\n\nasync function resolveSkillsClients(\n parsed: ParsedSkillsArgs,\n options: RunSkillsOptions,\n installsMcp: boolean,\n): Promise<SkillInstructionClientId[] | null> {\n if (parsed.clientExplicit || !shouldPrompt(parsed, options)) {\n const clients = filterSkillsClients(\n resolveSkillsClientArg(parsed.client, installsMcp),\n installsMcp,\n );\n if (clients.length === 0) {\n throw new Error(\n installsMcp\n ? \"MCP setup supports Claude Code, Codex, Claude Cowork, Cursor, OpenCode, or GitHub Copilot / VS Code clients. Use --mode local-files or --no-mcp for Pi.\"\n : \"Skill instructions use shared .agents for Codex, Pi, Cursor, OpenCode, Copilot, and similar agents, or Claude Code's native files.\",\n );\n }\n return clients;\n }\n const initialClients = skillsClients(installsMcp);\n const prompt = options.promptClients ?? promptForClients;\n const selected = normalizeSkillInstructionClientIds(\n await prompt({\n initialClients,\n options: clientPromptOptions(installsMcp),\n installsMcp,\n }),\n );\n if (selected.length === 0) return null;\n if (!parsed.dryRun) {\n try {\n writeConnectClientPreferences(selected.filter(isMcpClientId));\n } catch {}\n }\n return selected;\n}\n\nfunction normalizePlanInstallMode(value: string | undefined): PlanInstallMode {\n const normalized = value?.trim().toLowerCase();\n if (!normalized || normalized === \"hosted\") return \"hosted\";\n if (\n normalized === \"local\" ||\n normalized === \"local-file\" ||\n normalized === \"local-files\" ||\n normalized === \"files\"\n ) {\n return \"local-files\";\n }\n if (\n normalized === \"self-hosted\" ||\n normalized === \"selfhosted\" ||\n normalized === \"custom\" ||\n normalized === \"custom-url\"\n ) {\n return \"self-hosted\";\n }\n throw new Error(\n '--mode must be one of \"hosted\", \"local-files\", or \"self-hosted\".',\n );\n}\n\nfunction targetIncludesPlans(target: string): boolean {\n return normalizeKnownSkillTarget(target) === \"visual-plans\";\n}\n\nfunction targetsIncludePlans(targets: string[]): boolean {\n return targets.some(targetIncludesPlans);\n}\n\nfunction targetIncludesInstallModeSkill(target: string): boolean {\n return targetSupportsInstallMode(normalizeKnownSkillTarget(target));\n}\n\nfunction targetsIncludeInstallModeSkills(targets: string[]): boolean {\n return targets.some(targetIncludesInstallModeSkill);\n}\n\nfunction planSkillNamesSelected(skillNames: string[] | undefined): boolean {\n return Boolean(\n skillNames?.some(\n (name) => normalizeKnownSkillTarget(name) === \"visual-plans\",\n ),\n );\n}\n\nfunction installModeSkillNamesSelected(\n skillNames: string[] | undefined,\n): boolean {\n return Boolean(\n skillNames?.some((name) =>\n targetSupportsInstallMode(normalizeKnownSkillTarget(name)),\n ),\n );\n}\n\nfunction shouldForwardPlanModeFlag(\n target: string,\n skillNames: string[] | undefined,\n): boolean {\n return (\n targetIncludesInstallModeSkill(target) ||\n installModeSkillNamesSelected(skillNames)\n );\n}\n\nfunction recapSkillNamesSelected(skillNames: string[] | undefined): boolean {\n return Boolean(\n skillNames?.some((name) => {\n const normalized = name.trim().toLowerCase();\n return (\n normalized === \"visual-recap\" ||\n normalized === \"visual-recaps\" ||\n normalizeKnownSkillTarget(normalized) === \"visual-plans\"\n );\n }),\n );\n}\n\nfunction resolveSelectedSkillTargets(\n selected: string[],\n options: RunSkillsOptions,\n): string[] {\n const publicNames = publicSkillNames(options);\n const builtInSelections: string[] = [];\n const publicSelections: string[] = [];\n\n for (const raw of selected) {\n const skill = raw.trim().toLowerCase();\n if (!skill) continue;\n if (isKnownSkill(skill)) {\n builtInSelections.push(skill);\n continue;\n }\n if (publicNames.has(skill)) {\n publicSelections.push(skill);\n continue;\n }\n throw new Error(\n `Unknown skill: ${raw}. Run \"npx @agent-native/core@latest skills list\".`,\n );\n }\n\n const out: string[] = [];\n const planSubskills = [\"visual-plan\", \"visual-recap\", \"visualize-repo\"];\n const selectedPlanSubskills = planSubskills.filter((skill) =>\n builtInSelections.includes(skill),\n );\n if (selectedPlanSubskills.length === planSubskills.length) {\n out.push(\"visual-plans\");\n } else {\n out.push(...selectedPlanSubskills);\n }\n out.push(\n ...builtInSelections.filter(\n (skill) => !planSubskills.includes(skill) && !out.includes(skill),\n ),\n );\n if (publicSelections.length > 0) {\n out.push(publicSkillSelectionTarget([...new Set(publicSelections)]));\n }\n return out;\n}\n\nasync function resolveSkillTargets(\n parsed: ParsedSkillsArgs,\n options: RunSkillsOptions,\n): Promise<string[] | null> {\n if (!parsed.target && parsed.plainSkillNames?.length) {\n return resolveSelectedSkillTargets(parsed.plainSkillNames, options);\n }\n if (parsed.target || !shouldPrompt(parsed, options)) {\n const target = parsed.target ?? \"assets\";\n if (!parsed.target) return [target];\n const normalizedTarget = target.trim().toLowerCase();\n if (publicSkillNames(options).has(normalizedTarget)) {\n return [publicSkillSelectionTarget([normalizedTarget])];\n }\n return [target];\n }\n const prompt = options.promptSkills ?? promptForSkills;\n const promptOptions = skillPromptOptions(options);\n // The interactive multiselect skill picker is about to be shown (no --skill /\n // target passed and we are interactive) — record the funnel \"prompted\" step.\n options.telemetry?.track(\"skills_cli skills prompted\", {\n availableCount: promptOptions.length,\n available: promptOptions.map((option) => option.value).join(\",\"),\n });\n const selected = await prompt({\n initialTargets: defaultSkillPromptTargets(options),\n options: promptOptions,\n });\n if (!selected || selected.length === 0) return null;\n return resolveSelectedSkillTargets(selected, options);\n}\n\nexport function parseSkillsArgs(argv: string[]): ParsedSkillsArgs {\n const first = argv[0];\n let command: SkillsCommand = \"list\";\n let args = argv;\n if (first === \"help\" || first === \"--help\" || first === \"-h\") {\n command = \"help\";\n args = argv.slice(1);\n } else if (\n first === \"list\" ||\n first === \"add\" ||\n first === \"status\" ||\n first === \"update\"\n ) {\n command = first;\n args = argv.slice(1);\n } else if (first) {\n command = \"add\";\n }\n\n const out: ParsedSkillsArgs = {\n command,\n client: \"all\",\n clientExplicit: false,\n scope: \"user\",\n scopeExplicit: false,\n yes: false,\n dryRun: false,\n printJson: false,\n instructions: true,\n mcp: true,\n connect: true,\n };\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n const eat = (flag: string): string | undefined => {\n if (arg === flag) {\n const next = args[++i];\n if (!next || next.startsWith(\"-\")) {\n throw new Error(`Missing value for ${flag}.`);\n }\n return next;\n }\n if (arg.startsWith(`${flag}=`)) {\n const value = arg.slice(flag.length + 1);\n if (!value) throw new Error(`Missing value for ${flag}.`);\n return value;\n }\n return undefined;\n };\n let value: string | undefined;\n if ((value = eat(\"--client\")) !== undefined) {\n out.client = value;\n out.clientExplicit = true;\n } else if ((value = eat(\"--agent\")) !== undefined) {\n out.client = value;\n out.clientExplicit = true;\n } else if ((value = eat(\"-a\")) !== undefined) {\n out.client = value;\n out.clientExplicit = true;\n } else if ((value = eat(\"--skill\")) !== undefined) {\n out.plainSkillNames = [...(out.plainSkillNames ?? []), value];\n } else if ((value = eat(\"-s\")) !== undefined) {\n out.plainSkillNames = [...(out.plainSkillNames ?? []), value];\n } else if ((value = eat(\"--scope\")) !== undefined) {\n out.scope = value;\n out.scopeExplicit = true;\n } else if ((value = eat(\"--cwd\")) !== undefined) out.baseDir = value;\n else if ((value = eat(\"--mcp-url\")) !== undefined) out.mcpUrl = value;\n else if ((value = eat(\"--mode\")) !== undefined)\n out.planMode = normalizePlanInstallMode(value);\n else if (arg === \"--hosted\") out.planMode = \"hosted\";\n else if (arg === \"--local\" || arg === \"--local-files\")\n out.planMode = \"local-files\";\n else if (arg === \"--self-hosted\" || arg === \"--custom-url\")\n out.planMode = \"self-hosted\";\n else if (arg === \"--yes\" || arg === \"-y\") out.yes = true;\n else if (arg === \"--dry-run\") out.dryRun = true;\n else if (arg === \"--json\") out.printJson = true;\n else if (arg === \"-g\" || arg === \"--global\") {\n out.scope = \"user\";\n out.scopeExplicit = true;\n } else if (arg === \"--project\") {\n out.scope = \"project\";\n out.scopeExplicit = true;\n } else if (arg === \"--copy\") {\n // Compatibility with @agent-native/skills. Core always copies skill\n // instructions instead of linking to the source repo.\n } else if (arg === \"--mcp-only\") out.instructions = false;\n else if (arg === \"--instructions-only\" || arg === \"--no-mcp\")\n out.mcp = false;\n else if (arg === \"--no-connect\" || arg === \"--skip-connect\")\n out.connect = false;\n else if (arg === \"--with-github-action\" || arg === \"--with-github-actions\")\n out.withGithubAction = true;\n else if (arg === \"--update-instructions\") out.updateInstructions = true;\n else if (arg === \"--no-update-instructions\") out.updateInstructions = false;\n else if (arg === \"--force\") out.force = true;\n else if (arg.startsWith(\"-\")) throw new Error(`Unknown option: ${arg}`);\n else if (!out.target) out.target = arg;\n else throw new Error(`Unexpected argument: ${arg}`);\n }\n\n if (out.scope !== \"user\" && out.scope !== \"project\") {\n throw new Error(\"--scope must be either user or project.\");\n }\n if (out.planMode === \"local-files\" && out.mcpUrl) {\n throw new Error(\"--mode local-files cannot be combined with --mcp-url.\");\n }\n return out;\n}\n\nfunction loadSkillTarget(\n target: string,\n onlySkillNames?: string[],\n): SkillInstallTarget {\n const knownTarget = normalizeKnownSkillTarget(target);\n if (knownTarget) {\n const builtIn = BUILT_IN_APP_SKILLS[knownTarget];\n const skillNames = builtInSkillNames(builtIn).filter(\n (name) => !onlySkillNames || onlySkillNames.includes(name),\n );\n return {\n id: builtIn.manifest.id,\n displayName: builtIn.manifest.displayName,\n loaded: {\n manifest: builtIn.manifest,\n file: `<built-in:${builtIn.manifest.id}>`,\n dir: process.cwd(),\n },\n skillNames,\n modeAwareId: targetSupportsInstallMode(knownTarget)\n ? knownTarget\n : undefined,\n materializeInstructions(outDir) {\n const bundles = skillFilesForBuiltIn(knownTarget);\n for (const bundle of Object.values(bundles)) {\n if (onlySkillNames && !onlySkillNames.includes(bundle.skillName)) {\n continue;\n }\n writeSkillFolder(\n path.join(outDir, \"skills\", bundle.skillName),\n bundle,\n );\n }\n return outDir;\n },\n };\n }\n\n const resolved = path.resolve(target);\n const manifestFile = fs.statSync(resolved).isDirectory()\n ? path.join(resolved, \"agent-native.app-skill.json\")\n : resolved;\n const loaded = loadAppSkillManifest(manifestFile);\n return {\n id: loaded.manifest.id,\n displayName: loaded.manifest.displayName,\n loaded,\n skillNames: loaded.manifest.skills\n .filter(\n (skill) =>\n skill.visibility === \"exported\" || skill.visibility === \"both\",\n )\n .map((skill) => skill.exportAs ?? path.basename(skill.path)),\n modeAwareId: targetSupportsInstallMode(loaded.manifest.id)\n ? loaded.manifest.id\n : undefined,\n materializeInstructions(outDir) {\n const packed = buildAppSkillPack(loaded, outDir);\n const vercelAdapter = path.join(\n packed.outDir,\n \"adapters\",\n \"vercel-skills\",\n );\n return fs.existsSync(vercelAdapter) ? vercelAdapter : packed.outDir;\n },\n };\n}\n\nfunction skillsAgentsForClients(\n clients: SkillInstructionClientId[],\n): SkillInstructionClientId[] {\n const agents = new Set<SkillInstructionClientId>();\n for (const client of clients) {\n if (client === \"codex\") agents.add(\"codex\");\n if (client === \"claude-code\" || client === \"claude-code-cli\") {\n agents.add(\"claude-code\");\n }\n if (client === \"pi\") agents.add(\"pi\");\n }\n return [...agents];\n}\n\nfunction shellArg(value: string): string {\n if (/^[A-Za-z0-9_/:=.,@+-]+$/.test(value)) return value;\n return `'${value.replace(/'/g, `'\\\\''`)}'`;\n}\n\nfunction commandString(cmd: string, args: string[]): string {\n return [cmd, ...args].map(shellArg).join(\" \");\n}\n\nfunction clientArgForClients(clients: SkillInstructionClientId[]): string {\n if (clients.length === CLIENTS.length && clients.every(isMcpClientId))\n return \"all\";\n if (clients.length === 1) return clients[0];\n return clients.join(\",\");\n}\n\nfunction preserveMcpUrlAppPathOverride(\n target: SkillInstallTarget,\n input: string | undefined,\n): SkillInstallTarget {\n if (!input) return target;\n let parsed: URL;\n try {\n parsed = new URL(input);\n } catch {\n return target;\n }\n const trimmedPath = parsed.pathname.replace(/\\/+$/, \"\");\n const mcpSuffix = [MCP_LEGACY_ROUTE_PREFIX, MCP_PUBLIC_ROUTE_PREFIX].find(\n (suffix) => trimmedPath === suffix || trimmedPath.endsWith(suffix),\n );\n const appPath = mcpSuffix\n ? trimmedPath.slice(0, -mcpSuffix.length).replace(/\\/+$/, \"\")\n : trimmedPath;\n if (!appPath) return target;\n const url = `${parsed.origin}${appPath}`;\n return {\n ...target,\n loaded: {\n ...target.loaded,\n manifest: {\n ...target.loaded.manifest,\n hosted: { url, mcpUrl: `${url}${MCP_PUBLIC_ROUTE_PREFIX}` },\n },\n },\n };\n}\n\nfunction dryRunInstallCommand(\n parsed: ParsedSkillsArgs,\n target: string,\n options: { modeAwareTargetId?: string } = {},\n): string {\n const clients =\n parsed.clients ??\n resolveSkillsClientArg(parsed.client, targetInstallsMcp(target, parsed));\n const args = [\n \"@agent-native/core@latest\",\n \"skills\",\n \"add\",\n target,\n \"--client\",\n clientArgForClients(clients),\n \"--scope\",\n parsed.scope,\n ];\n const forwardsPlanFlags = shouldForwardPlanModeFlag(\n target,\n parsed.plainSkillNames,\n );\n const forwardsInstallMode =\n forwardsPlanFlags || targetSupportsInstallMode(options.modeAwareTargetId);\n if (forwardsInstallMode && parsed.planMode)\n args.push(\"--mode\", parsed.planMode);\n if (parsed.mcpUrl) args.push(\"--mcp-url\", parsed.mcpUrl);\n if (parsed.instructions && !parsed.mcp) args.push(\"--instructions-only\");\n if (!parsed.instructions && parsed.mcp) args.push(\"--mcp-only\");\n if (!parsed.connect) args.push(\"--no-connect\");\n if (parsed.withGithubAction) args.push(\"--with-github-action\");\n if (parsed.updateInstructions === true) args.push(\"--update-instructions\");\n if (parsed.updateInstructions === false)\n args.push(\"--no-update-instructions\");\n if (parsed.yes || isKnownSkill(target)) args.push(\"--yes\");\n return commandString(\"npx\", args);\n}\n\nasync function runCommand(\n cmd: string,\n args: string[],\n options: RunCommandOptions = {},\n): Promise<number> {\n return new Promise((resolve, reject) => {\n const pipeToStderr = options.stdio === \"stderr\";\n const silent = options.stdio === \"silent\";\n const stdoutChunks: Buffer[] = [];\n const stderrChunks: Buffer[] = [];\n const child = spawn(cmd, args, {\n stdio: pipeToStderr || silent ? [\"inherit\", \"pipe\", \"pipe\"] : \"inherit\",\n shell: process.platform === \"win32\",\n env: process.env,\n });\n if (pipeToStderr) {\n child.stdout?.on(\"data\", (chunk) => process.stderr.write(chunk));\n child.stderr?.on(\"data\", (chunk) => process.stderr.write(chunk));\n } else if (silent) {\n child.stdout?.on(\"data\", (chunk) =>\n stdoutChunks.push(Buffer.from(chunk)),\n );\n child.stderr?.on(\"data\", (chunk) =>\n stderrChunks.push(Buffer.from(chunk)),\n );\n }\n child.on(\"error\", reject);\n child.on(\"exit\", (code, signal) => {\n if (signal) {\n reject(new Error(`${cmd} was interrupted by ${signal}.`));\n return;\n }\n if (silent && code !== 0) {\n for (const chunk of stdoutChunks) process.stderr.write(chunk);\n for (const chunk of stderrChunks) process.stderr.write(chunk);\n }\n resolve(code ?? 0);\n });\n });\n}\n\n/**\n * Resolve a `--mcp-url` override into the `{ url, mcpUrl }` pair the manifest\n * expects. Accepts a bare origin (`https://x.ngrok-free.dev`) — appending the\n * standard `/mcp` path — or a full MCP URL already ending in `/mcp` or the\n * legacy `/_agent-native/mcp` path.\n */\nfunction resolveMcpUrlOverride(input: string): { url: string; mcpUrl: string } {\n let parsed: URL;\n try {\n parsed = new URL(input);\n } catch {\n throw new Error(`--mcp-url must be a valid URL (got \"${input}\").`);\n }\n if (parsed.protocol !== \"http:\" && parsed.protocol !== \"https:\") {\n throw new Error(\"--mcp-url must use http:// or https://.\");\n }\n const origin = parsed.origin;\n const trimmedPath = parsed.pathname.replace(/\\/+$/, \"\");\n const mcpSuffix = [MCP_LEGACY_ROUTE_PREFIX, MCP_PUBLIC_ROUTE_PREFIX].find(\n (suffix) => trimmedPath === suffix || trimmedPath.endsWith(suffix),\n );\n const mcpUrl = mcpSuffix\n ? `${origin}${trimmedPath.slice(0, -mcpSuffix.length)}${MCP_PUBLIC_ROUTE_PREFIX}`\n : `${origin}${MCP_PUBLIC_ROUTE_PREFIX}`;\n return { url: origin, mcpUrl };\n}\n\n/** Return a copy of the install target with its hosted MCP URL overridden. */\nfunction withMcpUrlOverride(\n target: SkillInstallTarget,\n input: string,\n): SkillInstallTarget {\n const { url, mcpUrl } = resolveMcpUrlOverride(input);\n return {\n ...target,\n loaded: {\n ...target.loaded,\n manifest: { ...target.loaded.manifest, hosted: { url, mcpUrl } },\n },\n };\n}\n\nfunction isPlainSkillRepoPath(target: string): boolean {\n const resolved = path.resolve(target);\n if (!fs.existsSync(resolved)) return false;\n const stat = fs.statSync(resolved);\n if (!stat.isDirectory()) return false;\n const hasDirectSkill = fs.existsSync(path.join(resolved, \"SKILL.md\"));\n const skillsDir = path.join(resolved, \"skills\");\n const hasSkillsDir =\n fs.existsSync(skillsDir) &&\n fs\n .readdirSync(skillsDir, { withFileTypes: true })\n .some(\n (entry) =>\n entry.isDirectory() &&\n fs.existsSync(path.join(skillsDir, entry.name, \"SKILL.md\")),\n );\n const hasAppSkillManifest = fs.existsSync(\n path.join(resolved, \"agent-native.app-skill.json\"),\n );\n return !hasAppSkillManifest && (hasDirectSkill || hasSkillsDir);\n}\n\nfunction isGithubSkillRepoTarget(target: string): boolean {\n if (/^[A-Za-z0-9_.-]+\\/[A-Za-z0-9_.-]+(?:#.+)?$/.test(target)) {\n return true;\n }\n try {\n const url = new URL(target);\n return url.hostname === \"github.com\";\n } catch {\n return false;\n }\n}\n\nfunction isPlainSkillRepoTarget(target: string): boolean {\n return isPlainSkillRepoPath(target) || isGithubSkillRepoTarget(target);\n}\n\nfunction agentNativeSkillsInstallArgs(\n parsed: ParsedSkillsArgs,\n target: string,\n clients: SkillInstructionClientId[],\n baseDir: string | undefined,\n): string[] {\n const args = [\n \"--yes\",\n \"@agent-native/skills@latest\",\n \"add\",\n \"--quiet\",\n \"--copy\",\n target,\n \"--client\",\n clientArgForClients(clients),\n \"--scope\",\n parsed.scope,\n ];\n if (baseDir) args.push(\"--cwd\", baseDir);\n if (parsed.withGithubAction) args.push(\"--with-github-action\");\n if (parsed.force) args.push(\"--force\");\n const forwardsPlanFlags = shouldForwardPlanModeFlag(\n target,\n parsed.plainSkillNames,\n );\n if (forwardsPlanFlags && parsed.planMode)\n args.push(\"--mode\", parsed.planMode);\n if (forwardsPlanFlags && parsed.mcpUrl) args.push(\"--mcp-url\", parsed.mcpUrl);\n if (!parsed.mcp) args.push(\"--no-mcp\");\n if (!parsed.connect) args.push(\"--no-connect\");\n for (const skill of parsed.plainSkillNames ?? []) {\n args.push(\"--skill\", skill);\n }\n if (parsed.updateInstructions === true) args.push(\"--update-instructions\");\n if (parsed.updateInstructions === false)\n args.push(\"--no-update-instructions\");\n if (parsed.yes) args.push(\"--yes\");\n if (parsed.dryRun) args.push(\"--dry-run\");\n return args;\n}\n\nasync function addPlainSkillRepo(\n parsed: ParsedSkillsArgs,\n options: RunSkillsOptions,\n): Promise<SkillsAddResult> {\n const target = parsed.target!;\n if (!parsed.instructions && parsed.mcp) {\n throw new Error(\n \"Plain skill repositories only install skill instructions. Run without --mcp-only.\",\n );\n }\n if (parsed.mcpUrl && !installModeSkillNamesSelected(parsed.plainSkillNames)) {\n throw new Error(\n \"--mcp-url only applies to app-backed Agent Native skills.\",\n );\n }\n\n const clients = parsed.clients ?? resolveSkillsClientArg(parsed.client);\n const skillsAgents = skillsAgentsForClients(clients);\n const selectedSkillNames = parsed.plainSkillNames ?? [];\n if (skillsAgents.length === 0) {\n throw new Error(\n \"Plain skill repositories install through shared .agents for Codex, Pi, Cursor, OpenCode, Copilot, and similar agents, or Claude Code's native files.\",\n );\n }\n const args = agentNativeSkillsInstallArgs(\n parsed,\n target,\n skillsAgents,\n options.baseDir,\n );\n if (!parsed.dryRun) {\n const code = await (options.runCommand ?? runCommand)(\"npx\", args, {\n stdio: \"silent\",\n });\n if (code !== 0)\n throw new Error(\n `npx @agent-native/skills@latest add exited with ${code}.`,\n );\n }\n options.telemetry?.track(\"skills_cli install completed\", {\n skills: selectedSkillNames.length ? selectedSkillNames.join(\",\") : target,\n clients: clients.join(\",\"),\n scope: parsed.scope,\n dryRun: Boolean(parsed.dryRun),\n });\n return {\n id: target,\n displayName: selectedSkillNames.length\n ? selectedSkillNames.join(\", \")\n : target,\n skillNames: selectedSkillNames,\n skillsAgents,\n mcpUrl: \"\",\n mcpClients: [],\n dryRun: parsed.dryRun,\n commands: [commandString(\"npx\", args)],\n local: true,\n };\n}\n\n/**\n * Whether we can run the interactive browser/device auth flow. CI and\n * non-TTY shells must not block on a browser approval, so we skip the inline\n * flow there and surface the exact `agent-native connect` command instead.\n */\nfunction canRunInteractiveConnect(options: RunSkillsOptions): boolean {\n if (options.isInteractive) return options.isInteractive();\n if (process.env.AGENT_NATIVE_NO_PROMPT === \"1\") return false;\n if (process.env.CI === \"true\") return false;\n return !!process.stdin.isTTY && !!process.stdout.isTTY;\n}\n\nfunction normalizeConnectLogMessage(message: string): string {\n return message\n .split(\"\\n\")\n .map((line) => (line.startsWith(\" \") ? line.slice(2) : line))\n .join(\"\\n\");\n}\n\nfunction createClackConnectLog(\n clack: typeof import(\"@clack/prompts\"),\n): (message: string) => void {\n return (message) => {\n clack.log.message(normalizeConnectLogMessage(message), {\n symbol: clack.S_BAR,\n secondarySymbol: clack.S_BAR,\n spacing: 0,\n });\n };\n}\n\nasync function runWithConnectSpinner<T>(\n options: RunSkillsOptions,\n message: string,\n task: () => T | Promise<T>,\n): Promise<T> {\n const spinner = options.createConnectSpinner?.();\n if (!spinner) return await task();\n spinner.start(message);\n try {\n return await task();\n } finally {\n spinner.clear();\n }\n}\n\n/** Build the `npx @agent-native/core@latest connect <url> --client … --scope …` command. */\nfunction connectCommandFor(\n hostedUrl: string,\n clients: ClientId[],\n scope: string,\n): string {\n const args = [\n \"@agent-native/core@latest\",\n \"connect\",\n hostedUrl,\n \"--client\",\n clientArgForClients(clients),\n \"--scope\",\n scope,\n ];\n return commandString(\"npx\", args);\n}\n\n/**\n * Authenticate the freshly-registered hosted MCP connector so the user does not\n * hit the OAuth wall on their first tool call. Reuses the existing\n * `agent-native connect` flow (OAuth-capable clients get URL-only config plus a\n * `/mcp` authenticate prompt; Codex / Cowork run the browser device-code flow).\n * In non-interactive shells we skip the inline flow and return the command to\n * run instead. Failures here are non-fatal: the connector is already registered,\n * so the user can authenticate later.\n */\nasync function connectAfterEnsure(\n installTarget: SkillInstallTarget,\n clients: ClientId[],\n parsed: ParsedSkillsArgs,\n options: RunSkillsOptions,\n): Promise<{ connected: boolean; connectCommand: string }> {\n const hostedUrl = installTarget.loaded.manifest.hosted.url;\n const authMode = installTarget.loaded.manifest.auth?.mode ?? \"oauth\";\n const connectCommand = connectCommandFor(hostedUrl, clients, parsed.scope);\n\n // Skills whose connector needs no auth (e.g. open/local-only) never need the\n // connect step.\n if (authMode === \"none\") {\n return { connected: false, connectCommand: \"\" };\n }\n\n if (!canRunInteractiveConnect(options)) {\n options.log?.(\n `Authentication skipped (non-interactive). To finish auth, run: ${connectCommand}`,\n );\n return { connected: false, connectCommand };\n }\n\n const authMessage = `Authenticating ${installTarget.displayName}…`;\n const connectLog = options.connectLog ?? options.log;\n const spinner = options.createConnectSpinner?.();\n let spinnerActive = false;\n let wroteAuthMessage = false;\n const clearSpinner = () => {\n if (!spinnerActive) return;\n spinner.clear();\n spinnerActive = false;\n };\n const writeAuthMessage = () => {\n if (wroteAuthMessage) return;\n connectLog?.(authMessage);\n wroteAuthMessage = true;\n };\n const writeConnectLog = (message: string) => {\n clearSpinner();\n writeAuthMessage();\n connectLog?.(message);\n };\n if (spinner) {\n spinner.start(authMessage);\n spinnerActive = true;\n } else {\n writeAuthMessage();\n }\n options.telemetry?.track(\"skills_cli connect started\");\n try {\n const connectArgs = [\n hostedUrl,\n \"--client\",\n clientArgForClients(clients),\n \"--scope\",\n parsed.scope,\n ];\n if (options.runConnect) {\n await options.runConnect(connectArgs);\n } else {\n await runConnect(connectArgs, {\n isInteractive: options.isInteractive,\n logOut: writeConnectLog,\n logErr: writeConnectLog,\n withBrowserOpenSpinner: (message, openBrowser) =>\n runWithConnectSpinner(options, message, openBrowser),\n });\n }\n clearSpinner();\n writeAuthMessage();\n options.telemetry?.track(\"skills_cli connect completed\");\n return { connected: true, connectCommand: \"\" };\n } catch (err: any) {\n clearSpinner();\n writeAuthMessage();\n // Non-fatal: the MCP connector is registered. Surface the manual command.\n options.telemetry?.track(\"skills_cli connect failed\", {\n error: err?.message ?? String(err),\n });\n connectLog?.(\n `Could not finish authentication automatically (${err?.message ?? err}). ` +\n `Run it later with: ${connectCommand}`,\n );\n return { connected: false, connectCommand };\n }\n}\n\nexport async function addAgentNativeSkill(\n parsed: ParsedSkillsArgs,\n options: RunSkillsOptions = {},\n): Promise<SkillsAddResult> {\n const target = parsed.target ?? \"assets\";\n const publicSelection = publicSkillSelectionNames(target);\n if (publicSelection) {\n return addPlainSkillRepo(\n {\n ...parsed,\n target: options.publicSkillSource ?? DEFAULT_PUBLIC_SKILLS_SOURCE,\n plainSkillNames: publicSelection,\n },\n options,\n );\n }\n const knownTarget = normalizeKnownSkillTarget(target);\n // For multi-skill bundles (the plan bundle), a single-skill target installs\n // only that skill. `installsRecap` controls the PR Visual Recap github-action\n // offer, which is only relevant when the recap skill is part of the install.\n const onlySkillNames = knownTarget\n ? builtInOnlySkillNames(target)\n : undefined;\n const installsRecap =\n knownTarget === \"visual-plans\" &&\n (!onlySkillNames || onlySkillNames.includes(\"visual-recap\"));\n if (!knownTarget && isPlainSkillRepoTarget(target)) {\n return addPlainSkillRepo({ ...parsed, target }, options);\n }\n if (!knownTarget && !fs.existsSync(path.resolve(target))) {\n throw new Error(\n `Unknown skill or manifest path: ${target}. Run \"npx @agent-native/core@latest skills list\".`,\n );\n }\n const knownBuiltIn = knownTarget ? BUILT_IN_APP_SKILLS[knownTarget] : null;\n const installsScreenMemoryMcp = isScreenMemoryMcpBuiltInSkill(knownBuiltIn);\n const baseDir = options.baseDir ?? process.cwd();\n if (installsScreenMemoryMcp && !parsed.mcp) {\n throw new Error(\n \"Rewind requires the local Clips Screen Memory MCP and cannot be installed with --no-mcp.\",\n );\n }\n if (installsScreenMemoryMcp && parsed.mcpUrl) {\n throw new Error(\n \"Rewind uses the local Clips Screen Memory MCP and does not accept --mcp-url.\",\n );\n }\n if (isLocalOnlyBuiltInSkill(knownBuiltIn)) {\n if (parsed.planMode) {\n throw new Error(\n \"--mode only applies to visual-plan / visual-recap / visualize-repo / content.\",\n );\n }\n if (parsed.mcpUrl) {\n throw new Error(\n \"Context X-Ray is installed locally and does not use --mcp-url yet.\",\n );\n }\n if (!parsed.instructions && parsed.mcp) {\n throw new Error(\n \"Context X-Ray does not need MCP config yet. Run without --mcp-only.\",\n );\n }\n const clients = (\n parsed.clients ?? resolveSkillsClientArg(parsed.client)\n ).filter(isMcpClientId);\n const skillsAgents = skillsAgentsForClients(clients);\n if (parsed.dryRun) {\n const githubActionPath =\n parsed.withGithubAction && knownTarget === \"visual-plans\"\n ? prVisualRecapWorkflowDisplayPath()\n : undefined;\n options.telemetry?.track(\"skills_cli install completed\", {\n skills: knownBuiltIn.skillName,\n clients: clients.join(\",\"),\n scope: parsed.scope,\n dryRun: true,\n });\n return {\n id: knownBuiltIn.manifest.id,\n displayName: knownBuiltIn.manifest.displayName,\n skillNames: [knownBuiltIn.skillName],\n skillsAgents,\n mcpUrl: \"\",\n mcpClients: [],\n dryRun: true,\n local: true,\n commands: [dryRunInstallCommand(parsed, target)],\n githubActionPath,\n };\n }\n const localInstall = installLocalContextXray({\n baseDir,\n clients,\n scope: parsed.scope,\n });\n options.telemetry?.track(\"skills_cli install completed\", {\n skills: knownBuiltIn.skillName,\n clients: clients.join(\",\"),\n scope: parsed.scope,\n dryRun: false,\n });\n return {\n id: knownBuiltIn.manifest.id,\n displayName: knownBuiltIn.manifest.displayName,\n instructionSource: localInstall.scriptPath,\n skillNames: [knownBuiltIn.skillName],\n skillsAgents,\n mcpUrl: \"\",\n mcpClients: [],\n dryRun: false,\n local: true,\n scriptPath: localInstall.scriptPath,\n written: localInstall.written,\n commands: localInstall.commands,\n };\n }\n let installTarget = loadSkillTarget(target, onlySkillNames);\n const modeAwareTargetId = installTarget.modeAwareId;\n const planMode = modeAwareTargetId\n ? (parsed.planMode ??\n (parsed.mcpUrl\n ? \"self-hosted\"\n : modeAwareTargetId === \"visual-plans\"\n ? \"hosted\"\n : undefined))\n : undefined;\n if (parsed.planMode && !modeAwareTargetId) {\n throw new Error(\n \"--mode only applies to visual-plan / visual-recap / visualize-repo / content.\",\n );\n }\n if (planMode === \"local-files\" && parsed.mcpUrl) {\n throw new Error(\"--mode local-files cannot be combined with --mcp-url.\");\n }\n if (planMode === \"self-hosted\" && !parsed.mcpUrl) {\n throw new Error(\"--mode self-hosted requires --mcp-url <url>.\");\n }\n const shouldRegisterMcp =\n parsed.mcp && !localFilesModeSkipsMcp(modeAwareTargetId, planMode);\n if (parsed.mcpUrl) {\n installTarget = withMcpUrlOverride(installTarget, parsed.mcpUrl);\n }\n const clients =\n parsed.clients ?? resolveSkillsClientArg(parsed.client, shouldRegisterMcp);\n const mcpClients = clients.filter(isMcpClientId);\n if (shouldRegisterMcp && mcpClients.length === 0) {\n throw new Error(\n \"MCP setup supports Claude Code, Codex, Claude Cowork, Cursor, OpenCode, or GitHub Copilot / VS Code clients. Use --mode local-files or --no-mcp for Pi.\",\n );\n }\n installTarget = preserveMcpUrlAppPathOverride(installTarget, parsed.mcpUrl);\n const skillsAgents = installsScreenMemoryMcp\n ? clients.filter((client) => client !== \"cowork\")\n : skillsAgentsForClients(clients);\n if (parsed.dryRun) {\n try {\n const localManifestPath = shouldWriteContentLocalFilesManifest(\n modeAwareTargetId,\n planMode,\n )\n ? contentLocalFilesManifestPath(baseDir)\n : undefined;\n const githubActionPath =\n parsed.withGithubAction && installsRecap\n ? prVisualRecapWorkflowDisplayPath()\n : undefined;\n const githubActionSuggestedCommand =\n installsRecap && !parsed.withGithubAction\n ? prVisualRecapInstallCommand()\n : undefined;\n options.telemetry?.track(\"skills_cli install completed\", {\n skills: installTarget.skillNames.join(\",\"),\n clients: clients.join(\",\"),\n scope: parsed.scope,\n dryRun: true,\n });\n return {\n id: installTarget.id,\n displayName: installTarget.displayName,\n skillNames: installTarget.skillNames,\n skillsAgents,\n mcpUrl: installsScreenMemoryMcp\n ? \"\"\n : localFilesModeSkipsMcp(modeAwareTargetId, planMode)\n ? \"\"\n : installTarget.loaded.manifest.hosted.mcpUrl,\n mcpClients: shouldRegisterMcp ? mcpClients : [],\n dryRun: true,\n commands: [\n dryRunInstallCommand(parsed, target, { modeAwareTargetId }),\n ...(localManifestPath ? [`write ${localManifestPath}`] : []),\n ],\n githubActionPath,\n githubActionSuggestedCommand,\n planMode,\n localManifestPath,\n };\n } finally {\n installTarget.cleanup?.();\n }\n }\n const commands: string[] = [];\n const screenMemoryDir = preflightRewindStore(parsed);\n const tmpRoot = fs.mkdtempSync(path.join(os.tmpdir(), \"an-skills-add-\"));\n let instructionSource: string | undefined;\n let instructionsWritten: string[] | undefined;\n let connected = false;\n let connectCommand: string | undefined;\n let registeredMcpClients: ClientId[] = shouldRegisterMcp ? mcpClients : [];\n let localManifestPath: string | undefined;\n const builtInInstructionInput: BuiltInInstructionInstallInput | undefined =\n knownTarget\n ? {\n appSkillId: knownTarget,\n onlySkillNames,\n skillsAgents,\n scope: parsed.scope as \"project\" | \"user\",\n baseDir,\n dryRun: parsed.dryRun,\n planMode,\n mcpUrl: installTarget.loaded.manifest.hosted.mcpUrl,\n }\n : undefined;\n const rewindSnapshots = installsScreenMemoryMcp\n ? snapshotInstallPaths(\n [\n ...(parsed.instructions && builtInInstructionInput\n ? builtInInstructionPaths(builtInInstructionInput)\n : []),\n ...(shouldRegisterMcp\n ? mcpClients.map((client) =>\n configPathFor(client, baseDir, parsed.scope),\n )\n : []),\n ],\n tmpRoot,\n )\n : undefined;\n const rollbackBoundary =\n parsed.scope === \"user\" ? os.homedir() : path.resolve(baseDir);\n\n try {\n if (parsed.instructions) {\n if (skillsAgents.length === 0) {\n if (!shouldRegisterMcp) {\n throw new Error(\n \"Skill instructions use shared .agents for Codex, Pi, Cursor, OpenCode, Copilot, and similar agents, or Claude Code's native files. Use an MCP-capable client or omit --instructions-only.\",\n );\n }\n } else if (knownTarget && builtInInstructionInput) {\n // Built-in skills ship their instructions inside this package, so copy\n // the skill folders straight into each client's skills directory. This\n // avoids shelling out to the separate @agent-native/skills installer\n // (which would need to be published to npm to run via npx).\n instructionsWritten = installBuiltInInstructions(\n builtInInstructionInput,\n );\n instructionSource = instructionsWritten[0];\n commands.push(...instructionsWritten.map((dir) => `write ${dir}`));\n } else {\n // External app-skill manifests / plain skill repos still go through the\n // standalone installer, which knows how to pack adapters and fetch\n // remote skill collections.\n instructionSource = installTarget.materializeInstructions(tmpRoot);\n const args = [\n \"--yes\",\n \"@agent-native/skills@latest\",\n \"add\",\n \"--quiet\",\n instructionSource,\n \"--copy\",\n ...installTarget.skillNames.flatMap((skill) => [\"--skill\", skill]),\n ...skillsAgents.flatMap((agent) => [\"-a\", agent]),\n ...(parsed.scope === \"user\" ? [\"-g\"] : []),\n ...(modeAwareTargetId && parsed.planMode\n ? [\"--mode\", parsed.planMode]\n : []),\n ...(modeAwareTargetId && parsed.mcpUrl\n ? [\"--mcp-url\", parsed.mcpUrl]\n : []),\n ...(parsed.yes || knownTarget ? [\"-y\"] : []),\n ];\n commands.push(commandString(\"npx\", args));\n if (!parsed.dryRun) {\n const code = await (options.runCommand ?? runCommand)(\"npx\", args, {\n stdio: \"silent\",\n });\n if (code !== 0)\n throw new Error(\n `npx @agent-native/skills@latest add exited with ${code}.`,\n );\n }\n }\n }\n\n if (shouldWriteContentLocalFilesManifest(modeAwareTargetId, planMode)) {\n localManifestPath = writeContentLocalFilesManifest(baseDir);\n commands.push(`write ${localManifestPath}`);\n }\n\n // Rewind reports completion only after both local writes succeed.\n if (!installsScreenMemoryMcp) {\n options.telemetry?.track(\"skills_cli install completed\", {\n skills: installTarget.skillNames.join(\",\"),\n clients: clients.join(\",\"),\n scope: parsed.scope,\n dryRun: Boolean(parsed.dryRun),\n });\n }\n\n if (shouldRegisterMcp && installsScreenMemoryMcp) {\n registeredMcpClients = mcpClients.map((client) => {\n commands.push(\n `npx @agent-native/core@latest mcp install-screen-memory --client ${client} --scope ${parsed.scope}`,\n );\n (options.installScreenMemory ?? installScreenMemoryForClient)(\n client,\n screenMemoryDir!,\n baseDir,\n parsed.scope,\n );\n return client;\n });\n options.telemetry?.track(\"skills_cli mcp registered\", {\n skills: installTarget.skillNames.join(\",\"),\n });\n options.telemetry?.track(\"skills_cli install completed\", {\n skills: installTarget.skillNames.join(\",\"),\n clients: clients.join(\",\"),\n scope: parsed.scope,\n dryRun: false,\n });\n } else if (shouldRegisterMcp) {\n commands.push(\n `npx @agent-native/core@latest app-skill ensure --manifest ${installTarget.loaded.file} --client ${parsed.client} --scope ${parsed.scope} --yes`,\n );\n if (!parsed.dryRun) {\n const ensureResult = await ensureAppSkill(installTarget.loaded, {\n clients: mcpClients,\n scope: parsed.scope,\n baseDir: options.baseDir,\n yes: parsed.yes || Boolean(knownTarget),\n confirm: true,\n log: options.log,\n });\n registeredMcpClients = ensureResult.written.map(\n (written) => written.client,\n );\n options.telemetry?.track(\"skills_cli mcp registered\", {\n skills: installTarget.skillNames.join(\",\"),\n });\n\n // One-step install + authenticate: after registering a hosted MCP\n // connector, kick off the existing connect/device-code flow so the user\n // does not hit an OAuth wall on the first tool call. `--no-connect`\n // opts out; non-interactive shells get the exact command to run.\n if (parsed.connect) {\n const result = await connectAfterEnsure(\n installTarget,\n mcpClients,\n parsed,\n options,\n );\n connected = result.connected;\n connectCommand = result.connectCommand || undefined;\n if (connected) registeredMcpClients = mcpClients;\n if (connectCommand) commands.push(connectCommand);\n } else {\n const pendingClients = mcpClients.filter(\n (client) => !registeredMcpClients.includes(client),\n );\n if (pendingClients.length > 0) {\n connectCommand = connectCommandFor(\n installTarget.loaded.manifest.hosted.url,\n pendingClients,\n parsed.scope,\n );\n commands.push(connectCommand);\n }\n }\n }\n }\n\n // `--with-github-action`: also drop the PR Visual Recap workflow into the\n // repo so PRs get automatic recaps. Only meaningful for the plan family.\n let withGithubAction = Boolean(parsed.withGithubAction);\n let githubActionPath: string | undefined;\n let githubActionExisted: boolean | undefined;\n let githubActionSuggestedCommand: string | undefined;\n if (\n installsRecap &&\n !withGithubAction &&\n !fs.existsSync(prVisualRecapWorkflowPath(baseDir))\n ) {\n // Normally the recap decision is made up front in `runSkills` (so it's\n // resolved here). Only prompt inline when a direct caller invoked\n // addAgentNativeSkill without going through that up-front step.\n if (!parsed.githubActionResolved && shouldPrompt(parsed, options)) {\n const prompt = options.promptGithubAction ?? promptForGithubAction;\n const choice = await prompt({\n workflowPath: prVisualRecapWorkflowDisplayPath(),\n setupCommand: prVisualRecapSetupCommand(),\n docsUrl: PR_VISUAL_RECAP_DOCS_URL,\n });\n if (choice === null) {\n options.telemetry?.track(\"skills_cli cancelled\", {\n step: \"github-action\",\n });\n }\n withGithubAction = choice === true;\n }\n if (!withGithubAction) {\n githubActionSuggestedCommand = prVisualRecapInstallCommand();\n }\n }\n\n if (withGithubAction) {\n if (!installsRecap) {\n options.log?.(\n \"--with-github-action only applies to the visual-recap skill; skipping the workflow.\",\n );\n } else {\n const writeResult = writePrVisualRecapWorkflow(baseDir, {\n force: Boolean(parsed.force),\n });\n if (writeResult.status === \"refused\") {\n throw new Error(`recap workflow: ${writeResult.message}`);\n }\n githubActionPath = writeResult.path;\n githubActionExisted =\n writeResult.status === \"written\" ? writeResult.existed : false;\n commands.push(`write ${writeResult.path}`);\n options.telemetry?.track(\"skills_cli github action added\");\n }\n }\n\n return {\n id: installTarget.id,\n displayName: installTarget.displayName,\n instructionSource,\n skillNames: installTarget.skillNames,\n skillsAgents,\n mcpUrl: installsScreenMemoryMcp\n ? \"\"\n : localFilesModeSkipsMcp(modeAwareTargetId, planMode)\n ? \"\"\n : installTarget.loaded.manifest.hosted.mcpUrl,\n mcpClients: registeredMcpClients,\n dryRun: parsed.dryRun,\n commands,\n written: instructionsWritten,\n connected,\n connectCommand,\n planMode,\n localManifestPath,\n githubActionPath,\n githubActionExisted,\n githubActionSuggestedCommand,\n };\n } catch (error) {\n if (rewindSnapshots) {\n try {\n restoreInstallPaths(rewindSnapshots, rollbackBoundary);\n } catch (rollbackError) {\n throw new AggregateError(\n [error, rollbackError],\n \"Rewind setup failed and its partial installation could not be fully rolled back.\",\n );\n }\n }\n throw error;\n } finally {\n fs.rmSync(tmpRoot, { recursive: true, force: true });\n installTarget.cleanup?.();\n }\n}\n\nfunction listSkills(options: RunSkillsOptions = {}) {\n const hidden = hiddenBuiltInSkillTargets(options);\n return [\n ...Object.values(BUILT_IN_APP_SKILLS)\n .filter((entry) => !hidden.has(entry.skillName))\n .map((entry) => ({\n id: entry.manifest.id,\n aliases:\n BUILT_IN_APP_SKILL_DISPLAY_ALIASES[\n entry.manifest.id as BuiltInAppSkillId\n ] ?? [],\n name: entry.manifest.displayName,\n description: entry.manifest.description,\n mcpUrl:\n isLocalOnlyBuiltInSkill(entry) || isScreenMemoryMcpBuiltInSkill(entry)\n ? \"\"\n : entry.manifest.hosted.mcpUrl,\n local:\n isLocalOnlyBuiltInSkill(entry) ||\n isScreenMemoryMcpBuiltInSkill(entry),\n source: \"agent-native\",\n })),\n ...publicSkillEntries(options).map((entry) => ({\n id: entry.name,\n aliases: [] as string[],\n name: entry.name,\n description:\n entry.description ?? \"Public skill from the BuilderIO skills catalog.\",\n mcpUrl: \"\",\n local: true,\n source: options.publicSkillSource ?? DEFAULT_PUBLIC_SKILLS_SOURCE,\n })),\n ];\n}\n\nfunction skillStateJson(state: SkillInstallState) {\n return {\n appSkillId: state.appSkillId,\n displayName: state.displayName,\n skillName: state.skillName,\n path: state.path,\n scope: state.scope,\n client: state.client,\n status: state.current ? \"current\" : \"stale\",\n managed: state.managed,\n installedHash: state.installedHash,\n latestHash: state.latestHash,\n metadataHash: state.metadataHash,\n planMode: state.planMode,\n };\n}\n\nfunction formatSkillState(state: SkillInstallState): string {\n const status = state.current ? \"current\" : \"stale\";\n const managed = state.managed ? \"managed\" : \"unmarked\";\n const hashes =\n state.installedHash && !state.current\n ? ` (${state.installedHash} -> ${state.latestHash})`\n : \"\";\n return `${state.skillName.padEnd(22)} ${status.padEnd(7)} ${state.scope}/${state.client} ${managed}${hashes}\\n ${state.path}`;\n}\n\nfunction scaffoldStateJson(state: ScaffoldGuidanceState) {\n return {\n kind: state.kind,\n displayName: state.displayName,\n templateName: state.templateName,\n path: state.path,\n sourcePath: state.sourcePath,\n projectRoot: state.projectRoot,\n workspaceRoot: state.workspaceRoot,\n sharedPackageDir: state.sharedPackageDir,\n skillCount: state.skillCount,\n status: state.current ? \"current\" : \"stale\",\n managed: true,\n };\n}\n\nfunction formatScaffoldState(state: ScaffoldGuidanceState): string {\n const status = state.current ? \"current\" : \"stale\";\n return `${\"scaffold\".padEnd(22)} ${status.padEnd(7)} project/${state.kind} managed (${state.skillCount} skills)\\n ${state.path}`;\n}\n\nfunction planModeSummary(mode: PlanInstallMode): string {\n if (mode === \"local-files\")\n return \"Local files - no hosted writes by default\";\n if (mode === \"self-hosted\") return \"Self-hosted/custom app\";\n return \"Hosted app\";\n}\n\nfunction skillInstructionAgentLabel(agent: string): string {\n if (agent === \"codex\") return SKILL_INSTRUCTION_CLIENT_LABELS.codex;\n if (agent === \"claude-code\")\n return SKILL_INSTRUCTION_CLIENT_LABELS[\"claude-code\"];\n if (agent === \"pi\") return SKILL_INSTRUCTION_CLIENT_LABELS.pi;\n return agent;\n}\n\nfunction targetInstallsMcp(\n target: string,\n parsed: Pick<ParsedSkillsArgs, \"mcp\" | \"planMode\">,\n): boolean {\n if (!parsed.mcp) return false;\n if (publicSkillSelectionNames(target)) return false;\n const knownTarget = normalizeKnownSkillTarget(target);\n if (localFilesModeSkipsMcp(knownTarget, parsed.planMode)) return false;\n if (knownTarget) {\n return !isLocalOnlyBuiltInSkill(BUILT_IN_APP_SKILLS[knownTarget]);\n }\n return true;\n}\n\nfunction targetsInstallMcp(\n targets: string[],\n parsed: ParsedSkillsArgs,\n): boolean {\n return targets.some((target) => targetInstallsMcp(target, parsed));\n}\n\nfunction instructionContentForSkill(skillName: string): string | null {\n if (skillName === \"quick-recap\") {\n return \"When writing final response status indicators, use the /quick-recap skill always.\";\n }\n if (skillName === \"efficient-fable\") {\n return \"When operating as Claude Fable, use the /efficient-fable skill always.\";\n }\n if (skillName === \"efficient-frontier\") {\n return \"When using a high-cost frontier model for codebase-heavy work, use the /efficient-frontier skill always.\";\n }\n if (skillName === \"stay-within-limits\") {\n return \"When long-running or parallel work needs usage-limit checks, use the /stay-within-limits skill always.\";\n }\n if (skillName === \"visual-plan\") {\n return \"When work needs an interactive visual plan before implementation, use the /visual-plan skill always.\";\n }\n if (skillName === \"visual-recap\") {\n return \"When a PR, branch, commit, or diff needs an interactive visual recap, use the /visual-recap skill always.\";\n }\n if (skillName === \"visualize-repo\") {\n return \"When a repository needs local visual docs or a navigable Plan-backed repo viewer, use the /visualize-repo skill always.\";\n }\n return null;\n}\n\nfunction selectedPlainSkillNamesForInstructionPrompt(\n targets: string[],\n parsed: ParsedSkillsArgs,\n): string[] {\n const names = new Set<string>(parsed.plainSkillNames ?? []);\n for (const target of targets) {\n for (const name of publicSkillSelectionNames(target) ?? []) {\n names.add(name);\n }\n }\n return [...names];\n}\n\nfunction hasManagedInstructionBlock(skillNames: string[]): boolean {\n return skillNames.some((name) => Boolean(instructionContentForSkill(name)));\n}\n\nfunction runSkillsStatusOrUpdate(\n parsed: ParsedSkillsArgs,\n options: RunSkillsOptions,\n update: boolean,\n): void {\n const skillBefore = collectSkillInstallStates(parsed, options);\n const scaffoldBefore = collectScaffoldGuidanceStates(parsed, options);\n const skillChanged = update\n ? updateSkillInstallStates(skillBefore, parsed.dryRun)\n : [];\n const scaffoldChanged = update\n ? updateScaffoldGuidanceStates(scaffoldBefore, parsed.dryRun)\n : [];\n if (update && !parsed.dryRun && scaffoldChanged.length > 0) {\n repairScaffoldAgentLinks(scaffoldChanged);\n }\n const skillAfter =\n update && !parsed.dryRun\n ? collectSkillInstallStates(parsed, options)\n : skillBefore;\n const scaffoldAfter =\n update && !parsed.dryRun\n ? collectScaffoldGuidanceStates(parsed, options)\n : scaffoldBefore;\n const beforeCount = skillBefore.length + scaffoldBefore.length;\n const changedCount = skillChanged.length + scaffoldChanged.length;\n\n if (parsed.printJson) {\n const outputSkillStates =\n update && !parsed.dryRun ? skillAfter : skillBefore;\n const outputScaffoldStates =\n update && !parsed.dryRun ? scaffoldAfter : scaffoldBefore;\n process.stdout.write(\n `${JSON.stringify(\n {\n ok: true,\n command: parsed.command,\n dryRun: parsed.dryRun,\n found: beforeCount,\n stale:\n outputSkillStates.filter((state) => !state.current).length +\n outputScaffoldStates.filter((state) => !state.current).length,\n updated: changedCount,\n skills: outputSkillStates.map(skillStateJson),\n scaffold: outputScaffoldStates.map(scaffoldStateJson),\n },\n null,\n 2,\n )}\\n`,\n );\n return;\n }\n\n if (beforeCount === 0) {\n const target = parsed.target ? ` for ${parsed.target}` : \"\";\n const hint = isScaffoldGuidanceTarget(parsed.target)\n ? `Run this from a generated Agent Native app or workspace root.\\n`\n : update\n ? `The update command only refreshes skill folders that already exist; it does not do first-time install, MCP registration, or auth. Run \"npx @agent-native/core@latest skills add ${parsed.target ?? \"visual-plan\"}\" for one-step setup.\\n`\n : `Run \"npx @agent-native/core@latest skills add ${parsed.target ?? \"visual-plan\"}\" to install one.\\n`;\n process.stdout.write(\n `No installed Agent Native skill copies found${target}.\\n${hint}`,\n );\n return;\n }\n\n if (update) {\n if (parsed.dryRun) {\n process.stdout.write(\n changedCount\n ? `Would update ${changedCount} skill folder${changedCount === 1 ? \"\" : \"s\"}:\\n`\n : \"All discovered skill folders are already current.\\n\",\n );\n } else {\n process.stdout.write(\n changedCount\n ? `Updated ${changedCount} skill folder${changedCount === 1 ? \"\" : \"s\"}.\\n`\n : \"All discovered skill folders are already current.\\n\",\n );\n }\n }\n\n const rows = [\n ...(update && parsed.dryRun ? skillBefore : skillAfter).map(\n formatSkillState,\n ),\n ...(update && parsed.dryRun ? scaffoldBefore : scaffoldAfter).map(\n formatScaffoldState,\n ),\n ];\n process.stdout.write(`${rows.join(\"\\n\")}\\n`);\n}\n\n/**\n * Resolve the CLI version the same way `index.ts` does — read it from the\n * package.json two levels up from the compiled module (dist/cli/skills.js →\n * ../../package.json). Best-effort: falls back to \"unknown\".\n */\nfunction readCliVersion(): string {\n try {\n const here = path.dirname(fileURLToPath(import.meta.url));\n const pkg = JSON.parse(\n fs.readFileSync(path.resolve(here, \"../../package.json\"), \"utf8\"),\n ) as { version?: unknown };\n return typeof pkg.version === \"string\" ? pkg.version : \"unknown\";\n } catch {\n return \"unknown\";\n }\n}\n\nfunction deferCliTelemetry(target: CliTelemetry): {\n telemetry: CliTelemetry;\n commit: () => void;\n} {\n type TrackCall = Parameters<CliTelemetry[\"track\"]>;\n type ExceptionCall = Parameters<CliTelemetry[\"captureException\"]>;\n const trackCalls: TrackCall[] = [];\n const exceptionCalls: ExceptionCall[] = [];\n let committed = false;\n\n return {\n telemetry: {\n track(...args) {\n if (committed) target.track(...args);\n else trackCalls.push(args);\n },\n captureException(...args) {\n if (committed) target.captureException(...args);\n else exceptionCalls.push(args);\n },\n async flush() {\n if (committed) await target.flush();\n },\n },\n commit() {\n if (committed) return;\n committed = true;\n for (const args of trackCalls) target.track(...args);\n for (const args of exceptionCalls) target.captureException(...args);\n trackCalls.length = 0;\n exceptionCalls.length = 0;\n },\n };\n}\n\nexport async function runSkills(\n argv: string[],\n options: RunSkillsOptions = {},\n): Promise<void> {\n const parsed = parseSkillsArgs(argv);\n if (parsed.baseDir) {\n options = { ...options, baseDir: path.resolve(parsed.baseDir) };\n }\n preflightRewindStore(parsed);\n const clackForLog = parsed.printJson\n ? undefined\n : await import(\"@clack/prompts\");\n const log = parsed.printJson\n ? undefined\n : (message: string) => {\n if (!message.trim()) return;\n clackForLog?.log.info(message);\n };\n const connectLog =\n !parsed.printJson && clackForLog\n ? createClackConnectLog(clackForLog)\n : undefined;\n const createConnectSpinner =\n !parsed.printJson && clackForLog && process.stdout.isTTY\n ? () => clackForLog.spinner({ indicator: \"timer\" })\n : undefined;\n\n if (parsed.command === \"help\") {\n process.stdout.write(`${HELP}\\n`);\n return;\n }\n\n // `@agent-native/skills` now delegates its interactive install to this\n // function. For plain skill repos we still shell out to\n // `npx @agent-native/skills@latest add …`; this env guard tells that child process\n // to run its OWN headless installer instead of bouncing back into core,\n // which would otherwise be an infinite skills → core → skills loop.\n const previousDirect = process.env.AGENT_NATIVE_SKILLS_DIRECT;\n process.env.AGENT_NATIVE_SKILLS_DIRECT = \"1\";\n\n // Best-effort install-funnel telemetry. Created once per run and flushed in a\n // finally so events send on success, error, and cancellation — the CLI is\n // short-lived, so flushing before exit is essential or the events never send.\n const startedAt = Date.now();\n const telemetryTarget =\n options.telemetry ??\n createCliTelemetry({\n cli: \"core\",\n cliVersion: readCliVersion(),\n command: parsed.command,\n interactive: shouldPrompt(parsed, options),\n });\n const deferredTelemetry = deferCliTelemetry(telemetryTarget);\n const telemetry = deferredTelemetry.telemetry;\n const deferUntilSkillSelection =\n parsed.command === \"add\" &&\n !parsed.target &&\n !(parsed.plainSkillNames?.length ?? 0);\n if (!deferUntilSkillSelection) deferredTelemetry.commit();\n const optionsWithTelemetry: RunSkillsOptions = {\n ...options,\n telemetry,\n connectLog: options.connectLog ?? connectLog,\n createConnectSpinner: options.createConnectSpinner ?? createConnectSpinner,\n };\n\n try {\n telemetry.track(\"skills_cli started\");\n\n if (parsed.command === \"list\") {\n const skills = listSkills(optionsWithTelemetry);\n telemetry.track(\"skills_cli skills listed\", {\n availableCount: skills.length,\n available: skills.map((skill) => skill.id).join(\",\"),\n });\n if (parsed.printJson) {\n process.stdout.write(`${JSON.stringify(skills, null, 2)}\\n`);\n return;\n }\n for (const skill of skills) {\n const description = skill.description.replace(/[.?!]?$/, \".\");\n const aliases = skill.aliases.length\n ? ` Aliases: ${skill.aliases.join(\", \")}.`\n : \"\";\n const target = skill.local ? \"local command\" : skill.mcpUrl;\n process.stdout.write(\n `${skill.id.padEnd(12)} ${description}${aliases} (${target})\\n`,\n );\n }\n return;\n }\n\n if (parsed.command === \"status\" || parsed.command === \"update\") {\n runSkillsStatusOrUpdate(parsed, options, parsed.command === \"update\");\n return;\n }\n\n const targets = await resolveSkillTargets(parsed, optionsWithTelemetry);\n if (!targets) {\n deferredTelemetry.commit();\n telemetry.track(\"skills_cli cancelled\", { step: \"skills\" });\n return;\n }\n preflightResolvedRewindTargets(parsed, targets);\n deferredTelemetry.commit();\n const preselected = Boolean(parsed.target);\n telemetry.track(\"skills_cli skills selected\", {\n selected: targets.join(\",\"),\n selectedCount: targets.length,\n // Best-effort \"took everything offered\" signal: compare against the\n // interactive picker's option count (the plan sub-skills collapse into a\n // single bundle target, so this is approximate, like the standalone CLI).\n selectedAll: targets.length === skillPromptOptions(options).length,\n preselected,\n });\n\n const includesPlans =\n targetsIncludePlans(targets) ||\n planSkillNamesSelected(parsed.plainSkillNames);\n const includesInstallModeSkills =\n targetsIncludeInstallModeSkills(targets) ||\n installModeSkillNamesSelected(parsed.plainSkillNames);\n if (parsed.planMode && !includesInstallModeSkills) {\n throw new Error(\n \"--mode only applies to visual-plan / visual-recap / visualize-repo / content.\",\n );\n }\n if (includesPlans) {\n if (!parsed.planMode && parsed.mcpUrl) {\n parsed.planMode = \"self-hosted\";\n }\n if (!parsed.planMode && shouldPrompt(parsed, options)) {\n const prompt = options.promptPlanMode ?? promptForPlanMode;\n const mode = await prompt({ initialMode: \"hosted\" });\n if (!mode) {\n telemetry.track(\"skills_cli cancelled\", { step: \"plan-mode\" });\n return;\n }\n parsed.planMode = mode;\n }\n if (!parsed.planMode) parsed.planMode = \"hosted\";\n if (parsed.planMode === \"self-hosted\" && !parsed.mcpUrl) {\n if (shouldPrompt(parsed, options)) {\n const prompt = options.promptPlanMcpUrl ?? promptForPlanMcpUrl;\n const mcpUrl = await prompt();\n if (!mcpUrl) {\n telemetry.track(\"skills_cli cancelled\", {\n step: \"plan-mcp-url\",\n });\n return;\n }\n parsed.mcpUrl = mcpUrl;\n } else {\n throw new Error(\n \"--mode self-hosted requires --mcp-url <url> in non-interactive mode.\",\n );\n }\n }\n telemetry.track(\"skills_cli plan mode selected\", {\n mode: parsed.planMode,\n });\n }\n\n const installsMcp = targetsInstallMcp(targets, parsed);\n const clients = await resolveSkillsClients(\n parsed,\n optionsWithTelemetry,\n installsMcp,\n );\n if (!clients) {\n telemetry.track(\"skills_cli cancelled\", { step: \"clients\" });\n return;\n }\n telemetry.track(\"skills_cli clients selected\", {\n clients: clients.join(\",\"),\n clientCount: clients.length,\n });\n\n // Ask where to install (project vs user) unless an explicit --scope was\n // passed or we are running non-interactively.\n if (!parsed.scopeExplicit && shouldPrompt(parsed, options)) {\n const promptScope = options.promptScope ?? promptForScope;\n const scope = await promptScope({ initialScope: \"project\" });\n if (!scope) {\n telemetry.track(\"skills_cli cancelled\", { step: \"scope\" });\n return;\n }\n parsed.scope = scope;\n }\n telemetry.track(\"skills_cli scope selected\", { scope: parsed.scope });\n\n const instructionSkillNames = selectedPlainSkillNamesForInstructionPrompt(\n targets,\n parsed,\n );\n if (\n parsed.updateInstructions === undefined &&\n hasManagedInstructionBlock(instructionSkillNames) &&\n shouldPrompt(parsed, options)\n ) {\n const prompt =\n options.promptUpdateInstructions ?? promptForUpdateInstructions;\n const choice = await prompt();\n if (choice === null) {\n telemetry.track(\"skills_cli cancelled\", {\n step: \"managed-instructions\",\n });\n return;\n }\n parsed.updateInstructions = choice === true;\n }\n\n // Decide the optional PR Visual Recap GitHub Action UP FRONT — before any\n // install or MCP registration — so every prompt is answered before we touch\n // disk. The choice is threaded into each install via `withGithubAction` +\n // `githubActionResolved` (so addAgentNativeSkill doesn't re-prompt mid-flow).\n const recapBaseDir = options.baseDir ?? process.cwd();\n const anyRecapTarget =\n targets.some((target) => {\n if (normalizeKnownSkillTarget(target) !== \"visual-plans\") return false;\n const only = builtInOnlySkillNames(target);\n return !only || only.includes(\"visual-recap\");\n }) || recapSkillNamesSelected(parsed.plainSkillNames);\n if (\n anyRecapTarget &&\n !parsed.withGithubAction &&\n !fs.existsSync(prVisualRecapWorkflowPath(recapBaseDir)) &&\n shouldPrompt(parsed, options)\n ) {\n const prompt = options.promptGithubAction ?? promptForGithubAction;\n const choice = await prompt({\n workflowPath: prVisualRecapWorkflowDisplayPath(),\n setupCommand: prVisualRecapSetupCommand(),\n docsUrl: PR_VISUAL_RECAP_DOCS_URL,\n });\n if (choice === null) {\n telemetry.track(\"skills_cli cancelled\", { step: \"github-action\" });\n }\n parsed.withGithubAction = choice === true;\n parsed.githubActionResolved = true;\n }\n\n const results: SkillsAddResult[] = [];\n for (const target of targets) {\n results.push(\n await addAgentNativeSkill(\n {\n ...parsed,\n target,\n client: clientArgForClients(clients),\n clients,\n },\n {\n ...optionsWithTelemetry,\n log,\n },\n ),\n );\n }\n\n // The add flow succeeded for every target — record the funnel completion\n // before printing output (output below cannot fail the install).\n const completedSkills = [\n ...new Set(results.flatMap((result) => result.skillNames)),\n ];\n const completedClients = [\n ...new Set(results.flatMap((result) => result.mcpClients)),\n ];\n telemetry.track(\"skills_cli completed\", {\n skills: completedSkills.join(\",\"),\n clients: completedClients.join(\",\"),\n scope: parsed.scope,\n durationMs: Date.now() - startedAt,\n });\n\n if (parsed.printJson) {\n process.stdout.write(\n `${JSON.stringify(results.length === 1 ? results[0] : results, null, 2)}\\n`,\n );\n return;\n }\n\n if (parsed.dryRun) {\n process.stdout.write(\n `${results.flatMap((result) => result.commands).join(\"\\n\")}\\n`,\n );\n return;\n }\n\n const installedNames = results\n .map((result) => result.displayName)\n .join(\", \");\n const skillsAgents = [\n ...new Set(results.flatMap((result) => result.skillsAgents)),\n ];\n const mcpClients = [\n ...new Set(results.flatMap((result) => result.mcpClients)),\n ];\n const mcpUrls = [\n ...new Set(results.map((result) => result.mcpUrl).filter(Boolean)),\n ];\n const localCommands = [\n ...new Set(\n results\n .filter((result) => result.local && result.scriptPath)\n .flatMap((result) => result.commands),\n ),\n ];\n const planModes = [\n ...new Set(\n results\n .map((result) => result.planMode)\n .filter((mode): mode is PlanInstallMode => Boolean(mode)),\n ),\n ];\n const authConnected = results.some((result) => result.connected);\n const pendingConnectCommands = [\n ...new Set(\n results\n .map((result) => result.connectCommand)\n .filter((command): command is string => Boolean(command)),\n ),\n ];\n const authLine = authConnected\n ? \"Authentication: completed.\"\n : pendingConnectCommands.length\n ? `Authentication: pending — run ${pendingConnectCommands.join(\" && \")}`\n : \"\";\n const githubActions = [\n ...new Set(\n results\n .map((result) => result.githubActionPath)\n .filter((p): p is string => Boolean(p)),\n ),\n ];\n const githubActionLine = githubActions.length\n ? `PR Visual Recap workflow: wrote ${githubActions.join(\", \")}.\\nNext: run ${prVisualRecapSetupCommand()} to configure GitHub secrets/variables, or set them manually:\\n ${PR_VISUAL_RECAP_SETUP.join(\"\\n \")}`\n : \"\";\n const githubActionSuggestions = [\n ...new Set(\n results\n .map((result) => result.githubActionSuggestedCommand)\n .filter((command): command is string => Boolean(command)),\n ),\n ];\n const githubActionSuggestionLine = githubActionSuggestions.length\n ? `Optional PR Visual Recap workflow: run ${githubActionSuggestions.join(\n \" && \",\n )} to add automatic recap comments on pull requests.`\n : \"\";\n const clack = await import(\"@clack/prompts\");\n const summary = [\n skillsAgents.length\n ? `Skill instructions ${skillsAgents.map(skillInstructionAgentLabel).join(\", \")}`\n : \"Skill instructions skipped\",\n mcpClients.length\n ? `MCP config ${mcpClients.map((client) => CLIENT_LABELS[client]).join(\", \")}`\n : \"MCP config not required\",\n mcpUrls.length ? `MCP URL ${mcpUrls.join(\", \")}` : \"\",\n planModes.length\n ? `Install mode ${planModes.map(planModeSummary).join(\", \")}`\n : \"\",\n authConnected\n ? \"Authentication completed\"\n : pendingConnectCommands.length\n ? `Authentication pending — run ${pendingConnectCommands.join(\" && \")}`\n : \"\",\n localCommands.length\n ? `Local command ${localCommands.join(\", \")}`\n : \"\",\n ].filter(Boolean);\n clack.note(\n summary.join(\"\\n\"),\n `Installed ${installedNames} skill${results.length === 1 ? \"\" : \"s\"}`,\n );\n\n // OAuth clients (Claude Code) can finish auth in-host via /mcp, not only by\n // running the connect command — surface that on the no-connect/pending path\n // so a hosted install isn't left looking \"done but unauthenticated\".\n if (\n !authConnected &&\n mcpClients.some(\n (client) => client === \"claude-code\" || client === \"claude-code-cli\",\n )\n ) {\n clack.log.info(\n \"Claude Code: reload the client, then open /mcp and choose Authenticate to finish connecting\" +\n (pendingConnectCommands.length\n ? \" (or run the connect command above).\"\n : \".\"),\n );\n }\n\n // GitHub Action follow-ups — kept as exact, copy-pasteable command lines.\n for (const line of [githubActionLine, githubActionSuggestionLine].filter(\n Boolean,\n )) {\n clack.log.info(line);\n }\n\n const slashCommands = completedSkills.map((name) => `/${name}`).join(\" \");\n const configuredEveryClient = SKILLS_CLIENTS.every((client) =>\n clients.includes(client),\n );\n const clientHint = configuredEveryClient\n ? \"\"\n : \"\\n Add another client later with --client <client> (e.g. --client claude-code).\";\n const reloadTarget = mcpClients.length > 0 ? \"skill + MCP server\" : \"skill\";\n clack.outro(\n `✅ All set! Start using ${slashCommands || \"your new skills\"} in your agent client.` +\n `\\n You may need to reload the client for the ${reloadTarget} to appear.` +\n clientHint,\n );\n } catch (error) {\n telemetry.track(\"skills_cli failed\", {\n command: parsed.command,\n error: error instanceof Error ? error.message : String(error),\n durationMs: Date.now() - startedAt,\n });\n telemetry.captureException(error, {\n handled: false,\n tags: { source: \"skills-command\", command: parsed.command },\n extra: { durationMs: Date.now() - startedAt },\n });\n throw error;\n } finally {\n await telemetry.flush();\n if (previousDirect === undefined) {\n delete process.env.AGENT_NATIVE_SKILLS_DIRECT;\n } else {\n process.env.AGENT_NATIVE_SKILLS_DIRECT = previousDirect;\n }\n }\n}\n"]}
|