@ashlr/hub 2.2.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +55 -0
- package/README.md +59 -2
- package/dist/api/plugin.d.ts +1 -0
- package/dist/cli/backlog.js +2 -0
- package/dist/cli/backlog.js.map +1 -1
- package/dist/cli/digest.d.ts +6 -0
- package/dist/cli/digest.js +127 -2
- package/dist/cli/digest.js.map +1 -1
- package/dist/cli/eval-fixtures.d.ts +18 -0
- package/dist/cli/eval-fixtures.js +38 -0
- package/dist/cli/eval-fixtures.js.map +1 -0
- package/dist/cli/eval.d.ts +56 -0
- package/dist/cli/eval.js +283 -0
- package/dist/cli/eval.js.map +1 -0
- package/dist/cli/fleet.d.ts +27 -0
- package/dist/cli/fleet.js +222 -0
- package/dist/cli/fleet.js.map +1 -0
- package/dist/cli/goal.d.ts +15 -0
- package/dist/cli/goal.js +91 -0
- package/dist/cli/goal.js.map +1 -0
- package/dist/cli/help.js +10 -3
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/inbox.d.ts +6 -0
- package/dist/cli/inbox.js +183 -8
- package/dist/cli/inbox.js.map +1 -1
- package/dist/cli/index.js +42 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/loop.d.ts +16 -0
- package/dist/cli/loop.js +66 -0
- package/dist/cli/loop.js.map +1 -0
- package/dist/cli/mcp.d.ts +12 -0
- package/dist/cli/mcp.js +148 -0
- package/dist/cli/mcp.js.map +1 -1
- package/dist/cli/onboard.d.ts +16 -0
- package/dist/cli/onboard.js +71 -0
- package/dist/cli/onboard.js.map +1 -1
- package/dist/cli/plugins.js +9 -8
- package/dist/cli/plugins.js.map +1 -1
- package/dist/cli/pulse.d.ts +10 -0
- package/dist/cli/pulse.js +261 -0
- package/dist/cli/pulse.js.map +1 -1
- package/dist/cli/run.js +21 -3
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/stack.d.ts +34 -0
- package/dist/cli/stack.js +221 -0
- package/dist/cli/stack.js.map +1 -0
- package/dist/cli/update.js +12 -5
- package/dist/cli/update.js.map +1 -1
- package/dist/core/daemon/loop.d.ts +10 -5
- package/dist/core/daemon/loop.js +167 -37
- package/dist/core/daemon/loop.js.map +1 -1
- package/dist/core/env-bridge.js +3 -2
- package/dist/core/env-bridge.js.map +1 -1
- package/dist/core/fleet/automerge-pass.d.ts +33 -0
- package/dist/core/fleet/automerge-pass.js +61 -0
- package/dist/core/fleet/automerge-pass.js.map +1 -0
- package/dist/core/fleet/quota.d.ts +70 -0
- package/dist/core/fleet/quota.js +198 -0
- package/dist/core/fleet/quota.js.map +1 -0
- package/dist/core/fleet/router.d.ts +46 -0
- package/dist/core/fleet/router.js +121 -0
- package/dist/core/fleet/router.js.map +1 -0
- package/dist/core/fleet/self.d.ts +58 -0
- package/dist/core/fleet/self.js +187 -0
- package/dist/core/fleet/self.js.map +1 -0
- package/dist/core/fleet/status.d.ts +54 -0
- package/dist/core/fleet/status.js +157 -0
- package/dist/core/fleet/status.js.map +1 -0
- package/dist/core/foundry/provenance.d.ts +78 -0
- package/dist/core/foundry/provenance.js +172 -0
- package/dist/core/foundry/provenance.js.map +1 -0
- package/dist/core/git.d.ts +13 -0
- package/dist/core/git.js +26 -0
- package/dist/core/git.js.map +1 -1
- package/dist/core/inbox/merge.d.ts +151 -0
- package/dist/core/inbox/merge.js +858 -0
- package/dist/core/inbox/merge.js.map +1 -0
- package/dist/core/inbox/store.js +10 -1
- package/dist/core/inbox/store.js.map +1 -1
- package/dist/core/integrations/markdown.d.ts +66 -0
- package/dist/core/integrations/markdown.js +132 -0
- package/dist/core/integrations/markdown.js.map +1 -0
- package/dist/core/integrations/secrets.d.ts +37 -0
- package/dist/core/integrations/secrets.js +67 -0
- package/dist/core/integrations/secrets.js.map +1 -0
- package/dist/core/integrations/stack.d.ts +47 -0
- package/dist/core/integrations/stack.js +107 -0
- package/dist/core/integrations/stack.js.map +1 -0
- package/dist/core/mcp-native-engineer.d.ts +123 -0
- package/dist/core/mcp-native-engineer.js +936 -0
- package/dist/core/mcp-native-engineer.js.map +1 -0
- package/dist/core/mcp-native.js +20 -42
- package/dist/core/mcp-native.js.map +1 -1
- package/dist/core/mcp-registry.js +2 -0
- package/dist/core/mcp-registry.js.map +1 -1
- package/dist/core/observability/codex-source.d.ts +53 -0
- package/dist/core/observability/codex-source.js +390 -0
- package/dist/core/observability/codex-source.js.map +1 -0
- package/dist/core/observability/estimate.d.ts +12 -0
- package/dist/core/observability/estimate.js +26 -0
- package/dist/core/observability/estimate.js.map +1 -1
- package/dist/core/observability/limits.d.ts +52 -0
- package/dist/core/observability/limits.js +316 -0
- package/dist/core/observability/limits.js.map +1 -0
- package/dist/core/observability/usage-source.js +3 -1
- package/dist/core/observability/usage-source.js.map +1 -1
- package/dist/core/portfolio/scanners.d.ts +1 -0
- package/dist/core/portfolio/scanners.js +40 -1
- package/dist/core/portfolio/scanners.js.map +1 -1
- package/dist/core/providers.js +4 -0
- package/dist/core/providers.js.map +1 -1
- package/dist/core/quality/health.js +1 -0
- package/dist/core/quality/health.js.map +1 -1
- package/dist/core/run/agent-loop.d.ts +8 -0
- package/dist/core/run/agent-loop.js +24 -14
- package/dist/core/run/agent-loop.js.map +1 -1
- package/dist/core/run/engine-registry.d.ts +48 -0
- package/dist/core/run/engine-registry.js +190 -0
- package/dist/core/run/engine-registry.js.map +1 -0
- package/dist/core/run/engines.d.ts +17 -3
- package/dist/core/run/engines.js +63 -44
- package/dist/core/run/engines.js.map +1 -1
- package/dist/core/run/learned-router.d.ts +121 -0
- package/dist/core/run/learned-router.js +374 -0
- package/dist/core/run/learned-router.js.map +1 -0
- package/dist/core/run/model-manager.js +3 -3
- package/dist/core/run/model-manager.js.map +1 -1
- package/dist/core/run/model-profile.d.ts +67 -0
- package/dist/core/run/model-profile.js +132 -0
- package/dist/core/run/model-profile.js.map +1 -0
- package/dist/core/run/orchestrator.d.ts +1 -1
- package/dist/core/run/orchestrator.js +642 -510
- package/dist/core/run/orchestrator.js.map +1 -1
- package/dist/core/run/prompts/budget.d.ts +25 -0
- package/dist/core/run/prompts/budget.js +51 -0
- package/dist/core/run/prompts/budget.js.map +1 -0
- package/dist/core/run/prompts/index.d.ts +14 -0
- package/dist/core/run/prompts/index.js +59 -0
- package/dist/core/run/prompts/index.js.map +1 -0
- package/dist/core/run/prompts/layers.d.ts +26 -0
- package/dist/core/run/prompts/layers.js +73 -0
- package/dist/core/run/prompts/layers.js.map +1 -0
- package/dist/core/run/prompts/roles.d.ts +23 -0
- package/dist/core/run/prompts/roles.js +48 -0
- package/dist/core/run/prompts/roles.js.map +1 -0
- package/dist/core/run/prompts/types.d.ts +38 -0
- package/dist/core/run/prompts/types.js +5 -0
- package/dist/core/run/prompts/types.js.map +1 -0
- package/dist/core/run/provider-client.d.ts +6 -24
- package/dist/core/run/provider-client.js +125 -61
- package/dist/core/run/provider-client.js.map +1 -1
- package/dist/core/run/router.js +8 -0
- package/dist/core/run/router.js.map +1 -1
- package/dist/core/run/sandboxed-engine.d.ts +66 -0
- package/dist/core/run/sandboxed-engine.js +262 -0
- package/dist/core/run/sandboxed-engine.js.map +1 -0
- package/dist/core/run/verify-commands.d.ts +83 -0
- package/dist/core/run/verify-commands.js +234 -0
- package/dist/core/run/verify-commands.js.map +1 -0
- package/dist/core/run/verify.d.ts +31 -1
- package/dist/core/run/verify.js +48 -0
- package/dist/core/run/verify.js.map +1 -1
- package/dist/core/sandbox/audit.d.ts +27 -0
- package/dist/core/sandbox/audit.js +34 -0
- package/dist/core/sandbox/audit.js.map +1 -1
- package/dist/core/sandbox/confine.d.ts +134 -0
- package/dist/core/sandbox/confine.js +370 -0
- package/dist/core/sandbox/confine.js.map +1 -0
- package/dist/core/types.d.ts +227 -5
- package/dist/core/web/api.js +77 -28
- package/dist/core/web/api.js.map +1 -1
- package/dist/core/web/control.d.ts +116 -0
- package/dist/core/web/control.js +307 -0
- package/dist/core/web/control.js.map +1 -0
- package/dist/core/web/public/app.js +512 -6
- package/dist/core/web/public/styles.css +468 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../../src/core/inbox/merge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+DG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EACL,oBAAoB,EACpB,gBAAgB,GAEjB,MAAM,2BAA2B,CAAC;AAEnC,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,gFAAgF;AAChF,MAAM,mBAAmB,GAAG,cAAc,CAAC;AAE3C,uCAAuC;AACvC,MAAM,WAAW,GAAG,MAAM,CAAC;AAE3B,8EAA8E;AAC9E,qCAAqC;AACrC,8EAA8E;AAE9E,qDAAqD;AACrD,SAAS,MAAM,CAAC,GAAW,EAAE,IAAc;IACzC,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE;QAC/B,GAAG;QACH,OAAO,EAAE,WAAW;QACpB,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,MAAM;KACjB,CAAC,CAAC,IAAI,EAAE,CAAC;AACZ,CAAC;AAED,qEAAqE;AACrE,SAAS,MAAM,CAAC,GAAW,EAAE,IAAc;IACzC,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,SAAS,YAAY,CAAC,OAAe;IACnC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC7C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACpE,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAClC,OAAO,CAAC,CAAC;AACX,CAAC;AAQD,+DAA+D;AAC/D,MAAM,UAAU,GAA8B,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAE7E;;;;GAIG;AACH,SAAS,oBAAoB,CAAC,IAAY;IACxC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,SAAS;QACvC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7B,sEAAsE;QACtE,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,GAAG,IAAI,CAAC;YAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,WAAW;YAAE,SAAS;QAChC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,mDAAmD;AACnD,SAAS,QAAQ,CAAC,CAAS;IACzB,MAAM,KAAK,GAAG,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACjC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AAC7D,CAAC;AAED,qEAAqE;AACrE,SAAS,SAAS,CAAC,CAAS;IAC1B,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtB,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC1E,CAAC;AAED,yEAAyE;AACzE,SAAS,UAAU,CAAC,CAAS;IAC3B,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtB,OAAO,CACL,CAAC,KAAK,mBAAmB;QACzB,CAAC,KAAK,gBAAgB;QACtB,CAAC,KAAK,WAAW;QACjB,CAAC,KAAK,WAAW;QACjB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CACpB,CAAC;AACJ,CAAC;AAED,2EAA2E;AAC3E,SAAS,UAAU,CAAC,CAAS;IAC3B,MAAM,KAAK,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9B,IACE,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;QACzB,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC;QAC1B,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACxB,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;QACzB,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,EAC7B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,8BAA8B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpD,CAAC;AAED,kEAAkE;AAClE,SAAS,YAAY,CAAC,CAAS;IAC7B,MAAM,KAAK,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9B,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9C,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtB,OAAO,CACL,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;QACnB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;QAClB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;QACnB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;QACnB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;QAClB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;QAClB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CACpB,CAAC;AACJ,CAAC;AAED,gEAAgE;AAChE,SAAS,YAAY,CAAC,CAAS;IAC7B,MAAM,KAAK,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9B,OAAO,oFAAoF,CAAC,IAAI,CAC9F,KAAK,CACN,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,qBAAqB,CAAC,CAAS;IACtC,MAAM,KAAK,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9B,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtB,+DAA+D;IAC/D,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9C,6BAA6B;IAC7B,IAAI,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO,IAAI,CAAC;IAChD,6CAA6C;IAC7C,IACE,CAAC,KAAK,cAAc;QACpB,CAAC,KAAK,mBAAmB;QACzB,CAAC,KAAK,gBAAgB;QACtB,CAAC,KAAK,WAAW;QACjB,CAAC,KAAK,WAAW;QACjB,CAAC,KAAK,gBAAgB;QACtB,CAAC,KAAK,QAAQ;QACd,CAAC,KAAK,SAAS;QACf,CAAC,KAAK,UAAU;QAChB,CAAC,KAAK,YAAY,EAClB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,uDAAuD;IACvD,IAAI,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3C,OAAO,KAAK,CAAC;AACf,CAAC;AAED,0EAA0E;AAC1E,SAAS,mBAAmB,CAAC,CAAS;IACpC,MAAM,KAAK,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9B,OAAO,CACL,0KAA0K,CAAC,IAAI,CAC7K,KAAK,CACN,IAAI,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CACxC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,YAAY,CAAC,QAAkB;IAC7C,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;IACjC,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAEzC,mEAAmE;IACnE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAEtC,gFAAgF;IAChF,8EAA8E;IAC9E,uEAAuE;IACvE,0EAA0E;IAC1E,0EAA0E;IAC1E,yEAAyE;IACzE,+DAA+D;IAC/D,yDAAyD;IACzD,MAAM,aAAa,GAAG,CAAC,CAAS,EAAW,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACnF,IACE,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAC/B,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,8EAA8E;IAC9E,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;YAAE,SAAS;QAC/D,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,YAAY,EAAE,CAAC;IACnE,CAAC;IACD,MAAM,WAAW,GAAG,EAAE,CAAC;IACvB,MAAM,WAAW,GAAG,GAAG,CAAC;IACxB,IAAI,KAAK,CAAC,MAAM,GAAG,WAAW,IAAI,YAAY,GAAG,WAAW;QAAE,OAAO,MAAM,CAAC;IAE5E,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAE/C,8EAA8E;IAC9E,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAC7B,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CACtD,CAAC;IACF,IAAI,WAAW;QAAE,OAAO,KAAK,CAAC;IAE9B,8EAA8E;IAC9E,8EAA8E;IAC9E,uDAAuD;IACvD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,eAAe,GAAG,EAAE,CAAC;QAC3B,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY,IAAI,eAAe,EAAE,CAAC;YAChE,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,wEAAwE;IACxE,+EAA+E;IAC/E,oEAAoE;IACpE,4EAA4E;IAC5E,6EAA6E;IAC7E,gEAAgE;IAChE,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAC/B,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CACzE,CAAC;IACF,OAAO,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;AAC3C,CAAC;AAWD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,sBAAsB,CACpC,QAAkB,EAClB,GAAgB;IAEhB,IAAI,QAAQ,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;QACvC,4EAA4E;QAC5E,iEAAiE;QACjE,iDAAiD;QACjD,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC;QAC5C,MAAM,IAAI,GACR,IAAI,KAAK,KAAK;YACZ,CAAC,CAAC,gEAAgE;YAClE,CAAC,CAAC,EAAE,CAAC;QACT,OAAO;YACL,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,kBAAkB,IAAI,mEAAmE,IAAI,EAAE;SACxG,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;IACzC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO;YACL,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,6DAA6D;SACtE,CAAC;IACJ,CAAC;IACD,IAAI,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACrC,OAAO;YACL,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,gBAAgB,WAAW,uFAAuF;SAC3H,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,EAAE,cAAc,CAAC;IAC9C,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzC,OAAO;YACL,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,yEAAyE;SAClF,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,WAAW,CAAC,CAAC;IAC9E,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO;YACL,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,gBAAgB,WAAW,wCAAwC;SAC5E,CAAC;IACJ,CAAC;IAED,OAAO;QACL,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,qBAAqB,WAAW,0BAA0B;KACnE,CAAC;AACJ,CAAC;AAWD,MAAM,UAAU,kBAAkB,CAAC,IAAiB;IAClD,IAAI,IAAI,KAAK,UAAU;QAAE,OAAO,MAAM,CAAC;IACvC,IAAI,IAAI,KAAK,KAAK;QAAE,OAAO,QAAQ,CAAC;IACpC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,uBAAuB,CAAC,QAAkB,EAAE,GAAgB;IAC1E,IAAI,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,KAAK,IAAI,EAAE,CAAC;QACjD,OAAO;YACL,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,gFAAgF;SACzF,CAAC;IACJ,CAAC;IACD,IAAI,kBAAkB,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,QAAQ,EAAE,CAAC;QACzD,OAAO;YACL,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,eAAe,QAAQ,CAAC,UAAU,IAAI,OAAO,0CAA0C;SAChG,CAAC;IACJ,CAAC;IACD,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;IACzC,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACrD,OAAO;YACL,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,gBAAgB,WAAW,IAAI,OAAO,gCAAgC;SAC/E,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,WAAW,2CAA2C,EAAE,CAAC;AAC9G,CAAC;AAED,8EAA8E;AAC9E,4DAA4D;AAC5D,8EAA8E;AAE9E,iFAAiF;AACjF,iCAAiC;AACjC,OAAO,EAAE,aAAa,EAAE,CAAC;AAYzB;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAkB,EAClB,GAAgB;IAEhB,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC3B,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,yBAAyB,IAAI,IAAI,QAAQ,EAAE,EAAE,CAAC;IACrF,CAAC;IACD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;IACjC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QACjB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,gCAAgC,EAAE,CAAC;IAC1E,CAAC;IAED,+EAA+E;IAC/E,oEAAoE;IACpE,2EAA2E;IAC3E,yEAAyE;IACzE,wEAAwE;IACxE,wEAAwE;IACxE,IAAI,oBAAoB,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,sBAAsB,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;QAC9E,CAAC;IACH,CAAC;IAED,gFAAgF;IAChF,0EAA0E;IAC1E,gFAAgF;IAChF,gFAAgF;IAChF,wEAAwE;IACxE,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC;QACxC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,GAAG,EAAE,EAAE;YACP,MAAM,EAAE,+DAA+D;SACxE,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACjC,gFAAgF;IAChF,MAAM,QAAQ,GACZ,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,cAAc,IAAI,EAAE,CAAC,CAAC;QAC7D,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,uBAAuB,IAAI,EAAE,CAAC,CAAC;QACtE,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IACtC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,6CAA6C,IAAI,GAAG,EAAE,CAAC;IAC9F,CAAC;IAED,MAAM,SAAS,GAAG,gBAAgB,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;IACnE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAEzF,gFAAgF;IAChF,IAAI,CAAC;QACH,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IACvE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QACpC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,GAAG,EAAE,EAAE;YACP,MAAM,EAAE,4BAA4B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;SACvF,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,GAAkB,IAAI,CAAC;IACpC,MAAM,GAAG,GAAoB,EAAE,CAAC;IAChC,IAAI,CAAC;QACH,8EAA8E;QAC9E,6EAA6E;QAC7E,uEAAuE;QACvE,6EAA6E;QAC7E,4EAA4E;QAC5E,sEAAsE;QACtE,MAAM,QAAQ,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,wBAAwB,KAAK,IAAI,CAAC;YACxE,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,GAAG,EAAE,EAAE;gBACP,MAAM,EAAE,KAAK;oBACX,CAAC,CAAC,sEAAsE;oBACxE,CAAC,CAAC,8EAA8E;aACnF,CAAC;QACJ,CAAC;QAED,uEAAuE;QACvE,8EAA8E;QAC9E,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,GAAG,EAAE,EAAE;gBACP,MAAM,EAAE,wCAAwC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;aACnG,CAAC;QACJ,CAAC;QAED,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACb,MAAM,GAAG,GAAG,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;YAC9C,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,GAAG;oBACH,MAAM,EAAE,WAAW,EAAE,CAAC,IAAI,kBAAkB,GAAG,CAAC,QAAQ,MAAM,GAAG,CAAC,OAAO,EAAE;iBAC5E,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO;YACL,EAAE,EAAE,IAAI;YACR,GAAG;YACH,MAAM,EAAE,OAAO,GAAG,CAAC,MAAM,8BAA8B,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SAC3F,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,EAAE,EAAE,KAAK;YACT,GAAG;YACH,MAAM,EAAE,yBAAyB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;SACpF,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC;gBACH,UAAU,CAAC,SAAS,CAAC,CAAC;YACxB,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY;YACd,CAAC;QACH,CAAC;QACD,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;QACxD,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QACpC,MAAM,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAeD;uEACuE;AACvE,SAAS,gBAAgB,CACvB,IAAY,EACZ,EAAU,EACV,IAAY,EACZ,IAAY;IAEZ,MAAM,MAAM,GAAG,GAAG,mBAAmB,GAAG,EAAE,EAAE,CAAC;IAC7C,MAAM,QAAQ,GACZ,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,cAAc,IAAI,EAAE,CAAC,CAAC;QAC7D,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,uBAAuB,IAAI,EAAE,CAAC,CAAC;QACtE,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IACtC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,6CAA6C,IAAI,GAAG,EAAE,CAAC;IACxF,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACzF,IAAI,CAAC;QACH,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IACpE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QACpC,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,4BAA4B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;SACvF,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,GAAkB,IAAI,CAAC;IACpC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,EAAE,GAAG,KAAK,CAAC;IACf,IAAI,CAAC;QACH,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;YAChD,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,8BAA8B,EAAE,EAAE,CAAC,CAAC,CAAC;YACpF,EAAE,GAAG,IAAI,CAAC;YACV,MAAM,GAAG,aAAa,MAAM,EAAE,CAAC;QACjC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,wBAAwB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QACtF,CAAC;IACH,CAAC;YAAS,CAAC;QACT,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC;gBACH,UAAU,CAAC,SAAS,CAAC,CAAC;YACxB,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY;YACd,CAAC;QACH,CAAC;QACD,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;QACxD,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAClD,MAAM,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC5D,CAAC;AAED;8EAC8E;AAC9E,SAAS,YAAY,CACnB,IAAY,EACZ,MAAc,EACd,IAAY;IAEZ,6EAA6E;IAC7E,6EAA6E;IAC7E,mDAAmD;IACnD,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QACrC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,mBAAmB,IAAI,wEAAwE,MAAM,yBAAyB;SACvI,CAAC;IACJ,CAAC;IAED,2EAA2E;IAC3E,6EAA6E;IAC7E,+EAA+E;IAC/E,4EAA4E;IAC5E,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;QACpD,MAAM,OAAO,GACX,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,cAAc,IAAI,EAAE,CAAC,CAAC;YAC7D,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;QACpC,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;YAC9C,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,0DAA0D,IAAI,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,qCAAqC,MAAM,yBAAyB;aACpK,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC7F,+EAA+E;IAC/E,+EAA+E;IAC/E,uCAAuC;IACvC,IAAI,CAAC;QACH,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QACpC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,yBAAyB,IAAI,aAAa,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;SACrG,CAAC;IACJ,CAAC;IAED,IAAI,EAAE,GAAG,KAAK,CAAC;IACf,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;QAC1D,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;QACnD,EAAE,GAAG,IAAI,CAAC;QACV,MAAM,GAAG,WAAW,MAAM,WAAW,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,sBAAsB,CAAC;IAC1G,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,6BAA6B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QACzF,+DAA+D;QAC/D,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;IACvC,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;QACxD,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;AACxB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,EAAU,EACV,GAAgB;IAEhB,MAAM,MAAM,GAAG,CAAC,MAAc,EAAE,OAAsB,IAAI,EAAmB,EAAE;QAC7E,KAAK,CAAC;YACJ,MAAM,EAAE,kBAAkB;YAC1B,IAAI;YACJ,SAAS,EAAE,EAAE;YACb,OAAO,EAAE,YAAY,MAAM,EAAE;YAC7B,MAAM,EAAE,SAAS;SAClB,CAAC,CAAC;QACH,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC9C,CAAC,CAAC;IAEF,IAAI,CAAC;QACH,4EAA4E;QAC5E,IAAI,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,EAAE,CAAC;YAC7C,OAAO,MAAM,CAAC,8DAA8D,CAAC,CAAC;QAChF,CAAC;QAED,4EAA4E;QAC5E,MAAM,QAAQ,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,QAAQ;YAAE,OAAO,MAAM,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;QAC1D,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACxD,OAAO,MAAM,CAAC,kBAAkB,QAAQ,CAAC,IAAI,oCAAoC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpG,CAAC;QACD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACjB,OAAO,MAAM,CAAC,+BAA+B,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,IAAI;YAAE,OAAO,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAEjD,4EAA4E;QAC5E,IAAI,YAAY,EAAE,EAAE,CAAC;YACnB,OAAO,MAAM,CAAC,4BAA4B,EAAE,IAAI,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,CAAC;YACH,eAAe,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,MAAM,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QACxE,CAAC;QAED,4EAA4E;QAC5E,0EAA0E;QAC1E,iFAAiF;QACjF,MAAM,MAAM,GAAG,kBAAkB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,MAAM,KAAK,MAAM,CAAC;QACjC,MAAM,SAAS,GACb,MAAM,KAAK,MAAM;YACf,CAAC,CAAC,sBAAsB,CAAC,QAAQ,EAAE,GAAG,CAAC;YACvC,CAAC,CAAC,MAAM,KAAK,QAAQ;gBACnB,CAAC,CAAC,uBAAuB,CAAC,QAAQ,EAAE,GAAG,CAAC;gBACxC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,QAAQ,CAAC,UAAU,IAAI,OAAO,4BAA4B,EAAE,CAAC;QACjH,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;YAC1B,OAAO,MAAM,CAAC,2BAA2B,SAAS,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;QACrE,CAAC;QAED,4EAA4E;QAC5E,yEAAyE;QACzE,qEAAqE;QACrE,yEAAyE;QACzE,yEAAyE;QACzE,gDAAgD;QAChD,MAAM,UAAU,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;YACnB,OAAO,MAAM,CAAC,4BAA4B,UAAU,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;QACvE,CAAC;QAED,2EAA2E;QAC3E,MAAM,OAAO,GAAc,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,IAAI,KAAK,CAAC;QACpE,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3C,OAAO,MAAM,CAAC,eAAe,IAAI,sBAAsB,OAAO,GAAG,EAAE,IAAI,CAAC,CAAC;QAC3E,CAAC;QAED,4EAA4E;QAC5E,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,OAAO,MAAM,CAAC,wBAAwB,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;QAC/D,CAAC;QAED,4EAA4E;QAC5E,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,MAAM,CAAC,iCAAiC,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAE7B,yEAAyE;QACzE,2BAA2B;QAC3B,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,KAAK,IAAI,CAAC;QACjE,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC;QAElD,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,aAAa,GAAG,KAAK,CAAC,CAAC,oDAAoD;QAC/E,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,KAAyB,CAAC;QAE9B,IAAI,UAAU,IAAI,SAAS,EAAE,CAAC;YAC5B,wEAAwE;YACxE,2EAA2E;YAC3E,uEAAuE;YACvE,sEAAsE;YACtE,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,KAAK,IAAI,CAAC;YACvE,KAAK,CAAC;gBACJ,MAAM,EAAE,kBAAkB;gBAC1B,IAAI;gBACJ,SAAS,EAAE,EAAE;gBACb,OAAO,EAAE,wBAAwB,MAAM,gBAAgB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE;gBACjF,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO;aAChC,CAAC,CAAC;YACH,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,MAAM,EAAE,KAAK;oBACb,MAAM,EAAE,+BAA+B;iBACxC,CAAC;YACJ,CAAC;YAED,0EAA0E;YAC1E,wEAAwE;YACxE,mCAAmC;YACnC,MAAM,SAAS,GAAG,YAAY,CAAC,qBAAqB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACpF,MAAM,QAAQ,GAAG,YAAY,CAC3B,GAAG,QAAQ,CAAC,OAAO,MAAM;gBACvB,kCAAkC,IAAI,KAAK,SAAS,CAAC,MAAM,KAAK;gBAChE,aAAa,MAAM,CAAC,MAAM,GAAG,CAChC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAEjB,2EAA2E;YAC3E,2CAA2C;YAC3C,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;gBAC9B,KAAK,EAAE,SAAS;gBAChB,IAAI,EAAE,QAAQ;gBACd,IAAI;gBACJ,IAAI,EAAE,MAAM;aACb,CAAC,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACX,MAAM,GAAG,aAAa,MAAM,4BAA4B,EAAE,CAAC,MAAM,EAAE,CAAC;YACtE,CAAC;iBAAM,CAAC;gBACN,KAAK,GAAG,EAAE,CAAC,GAAG,IAAI,SAAS,CAAC;gBAC5B,oEAAoE;gBACpE,sDAAsD;gBACtD,wEAAwE;gBACxE,gEAAgE;gBAChE,IAAI,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,wDAAwD,CAAC;gBAChG,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;oBACpB,IAAI,CAAC;wBACH,YAAY,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE;4BAChE,GAAG,EAAE,IAAI;4BACT,OAAO,EAAE,WAAW;4BACpB,KAAK,EAAE,MAAM;4BACb,QAAQ,EAAE,MAAM;4BAChB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,qBAAqB,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE;yBACnE,CAAC,CAAC;wBACH,MAAM,GAAG,IAAI,CAAC;wBACd,SAAS,GAAG,6BAA6B,CAAC;oBAC5C,CAAC;oBAAC,MAAM,CAAC;wBACP,SAAS,GAAG,+CAA+C,CAAC;oBAC9D,CAAC;gBACH,CAAC;qBAAM,IAAI,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;oBAC5B,aAAa,GAAG,IAAI,CAAC;gBACvB,CAAC;gBACD,MAAM,GAAG,GAAG,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACtD,CAAC;QACH,CAAC;aAAM,IAAI,MAAM,EAAE,CAAC;YAClB,2EAA2E;YAC3E,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YAC/C,MAAM,GAAG,KAAK,CAAC,EAAE,CAAC;YAClB,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,sEAAsE;YACtE,+BAA+B;YAC/B,aAAa,GAAG,IAAI,CAAC;YACrB,MAAM,GAAG,+DAA+D,MAAM,EAAE,CAAC;QACnF,CAAC;QAED,4EAA4E;QAC5E,4EAA4E;QAC5E,2EAA2E;QAC3E,6EAA6E;QAC7E,MAAM,OAAO,GAAG,MAAM,IAAI,aAAa,CAAC;QACxC,IAAI,OAAO,EAAE,CAAC;YACZ,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACnC,CAAC;QAED,MAAM,MAAM,GAAoB;YAC9B,EAAE,EAAE,OAAO;YACX,MAAM;YACN,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5C,MAAM;YACN,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5B,CAAC;QACF,KAAK,CAAC;YACJ,MAAM,EAAE,kBAAkB;YAC1B,IAAI;YACJ,SAAS,EAAE,EAAE;YACb,OAAO,EAAE,YAAY,EAAE,eAAe,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,KAAK,MAAM,EAAE;YACrH,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO;SACjC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,8DAA8D;QAC9D,OAAO,MAAM,CAAC,qBAAqB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACzF,CAAC;AACH,CAAC"}
|
package/dist/core/inbox/store.js
CHANGED
|
@@ -28,8 +28,17 @@ import { audit } from '../sandbox/audit.js';
|
|
|
28
28
|
export function inboxDir() {
|
|
29
29
|
return join(homedir(), '.ashlr', 'inbox');
|
|
30
30
|
}
|
|
31
|
-
/**
|
|
31
|
+
/**
|
|
32
|
+
* Absolute path to a specific proposal file.
|
|
33
|
+
* M32 hardening: ids reach this from the web API (GET/POST /api/inbox/:id),
|
|
34
|
+
* so validate the shape here too — defense in depth against path traversal,
|
|
35
|
+
* matching runFilePath's guard in core/run/orchestrator.ts. Generated ids
|
|
36
|
+
* are always [a-z0-9-], so this never rejects a legitimate proposal.
|
|
37
|
+
*/
|
|
32
38
|
function proposalPath(id) {
|
|
39
|
+
if (!/^[\w.-]+$/.test(id)) {
|
|
40
|
+
throw new Error(`Invalid proposal id: ${JSON.stringify(id)}`);
|
|
41
|
+
}
|
|
33
42
|
return join(inboxDir(), `${id}.json`);
|
|
34
43
|
}
|
|
35
44
|
// ---------------------------------------------------------------------------
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/core/inbox/store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,UAAU,EACV,SAAS,EACT,WAAW,EACX,YAAY,EACZ,UAAU,EACV,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE5C,8EAA8E;AAC9E,qEAAqE;AACrE,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,UAAU,QAAQ;IACtB,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/core/inbox/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* M68: ashlr-md rendering integration — opt-in, best-effort, never-throws.
|
|
3
|
+
*
|
|
4
|
+
* When ashlr-md (https://github.com/ashlrai/ashlr-md) is installed, operators
|
|
5
|
+
* can open generated Markdown (proposals, digests, specs) in the beautiful
|
|
6
|
+
* AI-native viewer instead of receiving a raw terminal dump.
|
|
7
|
+
*
|
|
8
|
+
* The integration is strictly additive:
|
|
9
|
+
* - When ashlr-md is absent, every function degrades gracefully: no error,
|
|
10
|
+
* no side-effect, caller receives ok:false / rendered:false and falls back
|
|
11
|
+
* to its own terminal output.
|
|
12
|
+
* - When ashlr-md IS present, a temp .md file is written to
|
|
13
|
+
* ~/.ashlr/tmp (or os.tmpdir() as fallback) and opened via `mdopen <file>`.
|
|
14
|
+
* The spawn is detached and unref()d — it never blocks the hub process.
|
|
15
|
+
*
|
|
16
|
+
* CLI command confirmed from ashlr-md's install.sh:
|
|
17
|
+
* mdopen <path-to-file.md>
|
|
18
|
+
* Installed to /usr/local/bin/mdopen or ~/.local/bin/mdopen by the ashlr-md
|
|
19
|
+
* installer script.
|
|
20
|
+
*
|
|
21
|
+
* Seam: `ashlr inbox` / `ashlr digest` will call `presentMarkdown(title, body)`
|
|
22
|
+
* and fall back to their existing terminal rendering when rendered === false.
|
|
23
|
+
*/
|
|
24
|
+
/**
|
|
25
|
+
* Returns true when `mdopen` is on PATH (i.e. ashlr-md CLI is installed).
|
|
26
|
+
* Never throws.
|
|
27
|
+
*/
|
|
28
|
+
export declare function ashlrMdInstalled(): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Open a .md file in the ashlr-md viewer (detached, non-blocking).
|
|
31
|
+
*
|
|
32
|
+
* Returns { ok: true } when the spawn is successfully started, or
|
|
33
|
+
* { ok: false, detail: <reason> } when ashlr-md is not installed or the
|
|
34
|
+
* spawn fails. Never throws.
|
|
35
|
+
*
|
|
36
|
+
* The child process is detached and unref()d: it outlives the hub process
|
|
37
|
+
* (the user sees the GUI window) without keeping the event loop alive.
|
|
38
|
+
*/
|
|
39
|
+
export declare function openInAshlrMd(filePath: string): {
|
|
40
|
+
ok: boolean;
|
|
41
|
+
detail: string;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Write a Markdown document to a temp file and return its path.
|
|
45
|
+
*
|
|
46
|
+
* Writes to ~/.ashlr/tmp/ (created on demand) with a timestamp-based name so
|
|
47
|
+
* multiple calls don't collide. Falls back to os.tmpdir() if the ashlr dir
|
|
48
|
+
* cannot be created. Returns null on any write failure. Never throws.
|
|
49
|
+
*/
|
|
50
|
+
export declare function renderToTempMarkdown(title: string, body: string): string | null;
|
|
51
|
+
/**
|
|
52
|
+
* Write a temp Markdown file and open it in ashlr-md if installed.
|
|
53
|
+
*
|
|
54
|
+
* This is the primary seam for `ashlr inbox` / `ashlr digest`. Callers should
|
|
55
|
+
* check `rendered` and fall back to terminal output when false.
|
|
56
|
+
*
|
|
57
|
+
* @returns
|
|
58
|
+
* - { rendered: true, path: string, detail: string } — file written + viewer launched
|
|
59
|
+
* - { rendered: false, path: string, detail: string } — file written but viewer absent/failed
|
|
60
|
+
* - { rendered: false, detail: string } — temp write failed
|
|
61
|
+
*/
|
|
62
|
+
export declare function presentMarkdown(title: string, body: string): {
|
|
63
|
+
rendered: boolean;
|
|
64
|
+
path?: string;
|
|
65
|
+
detail: string;
|
|
66
|
+
};
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* M68: ashlr-md rendering integration — opt-in, best-effort, never-throws.
|
|
3
|
+
*
|
|
4
|
+
* When ashlr-md (https://github.com/ashlrai/ashlr-md) is installed, operators
|
|
5
|
+
* can open generated Markdown (proposals, digests, specs) in the beautiful
|
|
6
|
+
* AI-native viewer instead of receiving a raw terminal dump.
|
|
7
|
+
*
|
|
8
|
+
* The integration is strictly additive:
|
|
9
|
+
* - When ashlr-md is absent, every function degrades gracefully: no error,
|
|
10
|
+
* no side-effect, caller receives ok:false / rendered:false and falls back
|
|
11
|
+
* to its own terminal output.
|
|
12
|
+
* - When ashlr-md IS present, a temp .md file is written to
|
|
13
|
+
* ~/.ashlr/tmp (or os.tmpdir() as fallback) and opened via `mdopen <file>`.
|
|
14
|
+
* The spawn is detached and unref()d — it never blocks the hub process.
|
|
15
|
+
*
|
|
16
|
+
* CLI command confirmed from ashlr-md's install.sh:
|
|
17
|
+
* mdopen <path-to-file.md>
|
|
18
|
+
* Installed to /usr/local/bin/mdopen or ~/.local/bin/mdopen by the ashlr-md
|
|
19
|
+
* installer script.
|
|
20
|
+
*
|
|
21
|
+
* Seam: `ashlr inbox` / `ashlr digest` will call `presentMarkdown(title, body)`
|
|
22
|
+
* and fall back to their existing terminal rendering when rendered === false.
|
|
23
|
+
*/
|
|
24
|
+
import { execFileSync, spawn } from 'node:child_process';
|
|
25
|
+
import { mkdirSync, writeFileSync } from 'node:fs';
|
|
26
|
+
import { homedir, tmpdir } from 'node:os';
|
|
27
|
+
import { join } from 'node:path';
|
|
28
|
+
/** Timeout (ms) for the `which mdopen` probe. Must be short — it's synchronous. */
|
|
29
|
+
const WHICH_TIMEOUT_MS = 2_000;
|
|
30
|
+
/**
|
|
31
|
+
* Returns true when `mdopen` is on PATH (i.e. ashlr-md CLI is installed).
|
|
32
|
+
* Never throws.
|
|
33
|
+
*/
|
|
34
|
+
export function ashlrMdInstalled() {
|
|
35
|
+
try {
|
|
36
|
+
execFileSync('which', ['mdopen'], {
|
|
37
|
+
timeout: WHICH_TIMEOUT_MS,
|
|
38
|
+
stdio: 'ignore',
|
|
39
|
+
});
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Open a .md file in the ashlr-md viewer (detached, non-blocking).
|
|
48
|
+
*
|
|
49
|
+
* Returns { ok: true } when the spawn is successfully started, or
|
|
50
|
+
* { ok: false, detail: <reason> } when ashlr-md is not installed or the
|
|
51
|
+
* spawn fails. Never throws.
|
|
52
|
+
*
|
|
53
|
+
* The child process is detached and unref()d: it outlives the hub process
|
|
54
|
+
* (the user sees the GUI window) without keeping the event loop alive.
|
|
55
|
+
*/
|
|
56
|
+
export function openInAshlrMd(filePath) {
|
|
57
|
+
if (!ashlrMdInstalled()) {
|
|
58
|
+
return { ok: false, detail: 'mdopen not found on PATH — ashlr-md not installed' };
|
|
59
|
+
}
|
|
60
|
+
try {
|
|
61
|
+
const child = spawn('mdopen', [filePath], {
|
|
62
|
+
detached: true,
|
|
63
|
+
stdio: 'ignore',
|
|
64
|
+
});
|
|
65
|
+
child.unref();
|
|
66
|
+
return { ok: true, detail: `opened ${filePath} in ashlr-md` };
|
|
67
|
+
}
|
|
68
|
+
catch (err) {
|
|
69
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
70
|
+
return { ok: false, detail: `mdopen spawn failed: ${msg}` };
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Write a Markdown document to a temp file and return its path.
|
|
75
|
+
*
|
|
76
|
+
* Writes to ~/.ashlr/tmp/ (created on demand) with a timestamp-based name so
|
|
77
|
+
* multiple calls don't collide. Falls back to os.tmpdir() if the ashlr dir
|
|
78
|
+
* cannot be created. Returns null on any write failure. Never throws.
|
|
79
|
+
*/
|
|
80
|
+
export function renderToTempMarkdown(title, body) {
|
|
81
|
+
try {
|
|
82
|
+
// Prefer ~/.ashlr/tmp so files land in a predictable, inspectable place.
|
|
83
|
+
let dir;
|
|
84
|
+
try {
|
|
85
|
+
dir = join(homedir(), '.ashlr', 'tmp');
|
|
86
|
+
mkdirSync(dir, { recursive: true });
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
dir = tmpdir();
|
|
90
|
+
}
|
|
91
|
+
const slug = title
|
|
92
|
+
.toLowerCase()
|
|
93
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
94
|
+
.replace(/^-+|-+$/g, '')
|
|
95
|
+
.slice(0, 40) || 'ashlr-doc';
|
|
96
|
+
const ts = Date.now();
|
|
97
|
+
// Add a random suffix so two calls in the same millisecond never collide.
|
|
98
|
+
const rand = Math.random().toString(36).slice(2, 8);
|
|
99
|
+
const filename = `${slug}-${ts}-${rand}.md`;
|
|
100
|
+
const filePath = join(dir, filename);
|
|
101
|
+
const content = `# ${title}\n\n${body}\n`;
|
|
102
|
+
writeFileSync(filePath, content, 'utf8');
|
|
103
|
+
return filePath;
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Write a temp Markdown file and open it in ashlr-md if installed.
|
|
111
|
+
*
|
|
112
|
+
* This is the primary seam for `ashlr inbox` / `ashlr digest`. Callers should
|
|
113
|
+
* check `rendered` and fall back to terminal output when false.
|
|
114
|
+
*
|
|
115
|
+
* @returns
|
|
116
|
+
* - { rendered: true, path: string, detail: string } — file written + viewer launched
|
|
117
|
+
* - { rendered: false, path: string, detail: string } — file written but viewer absent/failed
|
|
118
|
+
* - { rendered: false, detail: string } — temp write failed
|
|
119
|
+
*/
|
|
120
|
+
export function presentMarkdown(title, body) {
|
|
121
|
+
const path = renderToTempMarkdown(title, body);
|
|
122
|
+
if (path === null) {
|
|
123
|
+
return { rendered: false, detail: 'failed to write temp markdown file' };
|
|
124
|
+
}
|
|
125
|
+
const result = openInAshlrMd(path);
|
|
126
|
+
return {
|
|
127
|
+
rendered: result.ok,
|
|
128
|
+
path,
|
|
129
|
+
detail: result.detail,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=markdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../../src/core/integrations/markdown.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* integrations/secrets.ts — M65: phantom-vault credential resolution for the
|
|
3
|
+
* IN-PROCESS api-model backends (NVIDIA NIMs, Kimi/Moonshot, Hermes-API, …).
|
|
4
|
+
*
|
|
5
|
+
* WHY THIS IS SEPARATE FROM core/phantom.ts: that module is INTENTIONALLY
|
|
6
|
+
* values-free (it only ever inspects names/metadata). This module is the single,
|
|
7
|
+
* deliberate place where a real secret VALUE is pulled into the ashlr process —
|
|
8
|
+
* and only for an in-process network call that genuinely needs it.
|
|
9
|
+
*
|
|
10
|
+
* THE PHANTOM MODEL: `phantom init` rewrites .env real secrets into worthless
|
|
11
|
+
* phantom TOKENS; a local proxy swaps the real value in at the network layer for
|
|
12
|
+
* subprocesses run under `phantom exec` (that's how the CLI-agent backends stay
|
|
13
|
+
* leak-free — engines.ts phantomWrap). But an api-model backend makes its fetch
|
|
14
|
+
* IN-PROCESS, so a plain `process.env[KEY]` read would hand the API a worthless
|
|
15
|
+
* token. When phantom manages the key we therefore `phantom reveal` the real
|
|
16
|
+
* value for that one call. CLI-agent backends remain exec-proxied and never see
|
|
17
|
+
* a real key; this in-process reveal is the documented, narrow exception.
|
|
18
|
+
*
|
|
19
|
+
* SAFETY: never throws; never logs the value; resolves on demand (no caching, so
|
|
20
|
+
* a rotated secret is always current and the value isn't held longer than needed).
|
|
21
|
+
*/
|
|
22
|
+
import type { AshlrConfig } from '../types.js';
|
|
23
|
+
/**
|
|
24
|
+
* Reveal a phantom-vault secret value for in-process use. Returns null when
|
|
25
|
+
* phantom can't provide it (not installed, name not in the vault, non-zero exit,
|
|
26
|
+
* empty). Uses `-y` (skip confirmation) + `--quiet` for non-interactive use.
|
|
27
|
+
* Never throws; never logs the value.
|
|
28
|
+
*/
|
|
29
|
+
export declare function revealSecret(name: string): string | null;
|
|
30
|
+
/**
|
|
31
|
+
* Resolve a provider API key by env-var name. When phantom is ENABLED and
|
|
32
|
+
* installed, prefer the phantom-vault value (because `phantom init` rewrites the
|
|
33
|
+
* env to a worthless token — a raw env read would send that token to the API);
|
|
34
|
+
* fall back to `process.env[envKey]` for keys phantom doesn't manage or when
|
|
35
|
+
* phantom is off. Returns undefined when neither source has a non-empty value.
|
|
36
|
+
*/
|
|
37
|
+
export declare function resolveProviderKey(envKey: string, cfg: AshlrConfig): string | undefined;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* integrations/secrets.ts — M65: phantom-vault credential resolution for the
|
|
3
|
+
* IN-PROCESS api-model backends (NVIDIA NIMs, Kimi/Moonshot, Hermes-API, …).
|
|
4
|
+
*
|
|
5
|
+
* WHY THIS IS SEPARATE FROM core/phantom.ts: that module is INTENTIONALLY
|
|
6
|
+
* values-free (it only ever inspects names/metadata). This module is the single,
|
|
7
|
+
* deliberate place where a real secret VALUE is pulled into the ashlr process —
|
|
8
|
+
* and only for an in-process network call that genuinely needs it.
|
|
9
|
+
*
|
|
10
|
+
* THE PHANTOM MODEL: `phantom init` rewrites .env real secrets into worthless
|
|
11
|
+
* phantom TOKENS; a local proxy swaps the real value in at the network layer for
|
|
12
|
+
* subprocesses run under `phantom exec` (that's how the CLI-agent backends stay
|
|
13
|
+
* leak-free — engines.ts phantomWrap). But an api-model backend makes its fetch
|
|
14
|
+
* IN-PROCESS, so a plain `process.env[KEY]` read would hand the API a worthless
|
|
15
|
+
* token. When phantom manages the key we therefore `phantom reveal` the real
|
|
16
|
+
* value for that one call. CLI-agent backends remain exec-proxied and never see
|
|
17
|
+
* a real key; this in-process reveal is the documented, narrow exception.
|
|
18
|
+
*
|
|
19
|
+
* SAFETY: never throws; never logs the value; resolves on demand (no caching, so
|
|
20
|
+
* a rotated secret is always current and the value isn't held longer than needed).
|
|
21
|
+
*/
|
|
22
|
+
import { spawnSync } from 'node:child_process';
|
|
23
|
+
import { phantomInstalled } from '../phantom.js';
|
|
24
|
+
const PHANTOM_BIN = 'phantom';
|
|
25
|
+
const TIMEOUT_MS = 5_000;
|
|
26
|
+
/**
|
|
27
|
+
* Reveal a phantom-vault secret value for in-process use. Returns null when
|
|
28
|
+
* phantom can't provide it (not installed, name not in the vault, non-zero exit,
|
|
29
|
+
* empty). Uses `-y` (skip confirmation) + `--quiet` for non-interactive use.
|
|
30
|
+
* Never throws; never logs the value.
|
|
31
|
+
*/
|
|
32
|
+
export function revealSecret(name) {
|
|
33
|
+
try {
|
|
34
|
+
const res = spawnSync(PHANTOM_BIN, ['reveal', name, '--yes', '--quiet'], {
|
|
35
|
+
encoding: 'utf8',
|
|
36
|
+
timeout: TIMEOUT_MS,
|
|
37
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
38
|
+
env: { ...process.env, PHANTOM_NO_UPDATE_CHECK: '1' },
|
|
39
|
+
});
|
|
40
|
+
if (res.status !== 0 || res.error)
|
|
41
|
+
return null;
|
|
42
|
+
const value = (res.stdout ?? '').trim();
|
|
43
|
+
return value.length > 0 ? value : null;
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Resolve a provider API key by env-var name. When phantom is ENABLED and
|
|
51
|
+
* installed, prefer the phantom-vault value (because `phantom init` rewrites the
|
|
52
|
+
* env to a worthless token — a raw env read would send that token to the API);
|
|
53
|
+
* fall back to `process.env[envKey]` for keys phantom doesn't manage or when
|
|
54
|
+
* phantom is off. Returns undefined when neither source has a non-empty value.
|
|
55
|
+
*/
|
|
56
|
+
export function resolveProviderKey(envKey, cfg) {
|
|
57
|
+
if (!envKey)
|
|
58
|
+
return undefined;
|
|
59
|
+
if (cfg.phantom?.enabled && phantomInstalled()) {
|
|
60
|
+
const fromVault = revealSecret(envKey);
|
|
61
|
+
if (fromVault)
|
|
62
|
+
return fromVault;
|
|
63
|
+
}
|
|
64
|
+
const fromEnv = process.env[envKey];
|
|
65
|
+
return fromEnv && fromEnv.trim().length > 0 ? fromEnv : undefined;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=secrets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../../src/core/integrations/secrets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,WAAW,GAAG,SAAS,CAAC;AAC9B,MAAM,UAAU,GAAG,KAAK,CAAC;AAEzB;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE;YACvE,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,UAAU;YACnB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;YACnC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,uBAAuB,EAAE,GAAG,EAAE;SACtD,CAAC,CAAC;QACH,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAC/C,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAc,EAAE,GAAgB;IACjE,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,IAAI,GAAG,CAAC,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,EAAE,CAAC;QAC/C,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,SAAS;YAAE,OAAO,SAAS,CAAC;IAClC,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpC,OAAO,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AACpE,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* integrations/stack.ts — M69: detect + read the ecosystem `stack` tool
|
|
3
|
+
* (service control plane: OAuth → provider → secrets, Phantom-wired).
|
|
4
|
+
*
|
|
5
|
+
* READ-ONLY / ADVISORY by design: the hub DETECTS stack and reports status so an
|
|
6
|
+
* agent or the operator knows what services are wired — it never auto-provisions
|
|
7
|
+
* (`stack apply` stays a deliberate, user-initiated action). Never throws.
|
|
8
|
+
*
|
|
9
|
+
* M73: adds stackRun() — a bounded, never-throw passthrough runner used by the
|
|
10
|
+
* `ashlr stack` CLI layer. Mutating actions (add/apply) are gated at the CLI
|
|
11
|
+
* layer BEFORE calling stackRun; the runner itself is intentionally neutral.
|
|
12
|
+
*/
|
|
13
|
+
/** Whether the `stack` CLI is on PATH. Never throws. */
|
|
14
|
+
export declare function stackInstalled(): boolean;
|
|
15
|
+
/** Whether a repo has a committed stack config (.stack.toml). Never throws. */
|
|
16
|
+
export declare function stackProjectConfigured(repo: string): boolean;
|
|
17
|
+
export interface StackStatus {
|
|
18
|
+
ok: boolean;
|
|
19
|
+
/** Service names stack reports as wired (best-effort parse). */
|
|
20
|
+
services?: string[];
|
|
21
|
+
detail: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Read `stack status --json` for a repo (best-effort). ok:false (never throws)
|
|
25
|
+
* when stack is absent, errors, or times out. Tolerates an unparsable payload
|
|
26
|
+
* (returns ok:true with an empty service list).
|
|
27
|
+
*/
|
|
28
|
+
export declare function stackStatus(repo?: string): StackStatus;
|
|
29
|
+
export interface StackRunResult {
|
|
30
|
+
/** Whether the process exited 0. */
|
|
31
|
+
ok: boolean;
|
|
32
|
+
/** Combined stdout captured (may be empty for streaming calls). */
|
|
33
|
+
stdout: string;
|
|
34
|
+
/** Exit code (null when the process couldn't be launched). */
|
|
35
|
+
code: number | null;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Run `stack <args>` and return {ok, stdout, code}. Never throws. Bounded by
|
|
39
|
+
* TIMEOUT_MS. Mutating actions (add / apply) MUST be gated by the CLI layer
|
|
40
|
+
* (cmdStack) BEFORE this is called — this runner is intentionally neutral.
|
|
41
|
+
*
|
|
42
|
+
* @param args Arguments to pass to the `stack` binary (e.g. ['add', 'postgres']).
|
|
43
|
+
* @param opts.cwd Optional working directory (default: process.cwd()).
|
|
44
|
+
*/
|
|
45
|
+
export declare function stackRun(args: string[], opts?: {
|
|
46
|
+
cwd?: string;
|
|
47
|
+
}): StackRunResult;
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* integrations/stack.ts — M69: detect + read the ecosystem `stack` tool
|
|
3
|
+
* (service control plane: OAuth → provider → secrets, Phantom-wired).
|
|
4
|
+
*
|
|
5
|
+
* READ-ONLY / ADVISORY by design: the hub DETECTS stack and reports status so an
|
|
6
|
+
* agent or the operator knows what services are wired — it never auto-provisions
|
|
7
|
+
* (`stack apply` stays a deliberate, user-initiated action). Never throws.
|
|
8
|
+
*
|
|
9
|
+
* M73: adds stackRun() — a bounded, never-throw passthrough runner used by the
|
|
10
|
+
* `ashlr stack` CLI layer. Mutating actions (add/apply) are gated at the CLI
|
|
11
|
+
* layer BEFORE calling stackRun; the runner itself is intentionally neutral.
|
|
12
|
+
*/
|
|
13
|
+
import { spawnSync } from 'node:child_process';
|
|
14
|
+
import { existsSync } from 'node:fs';
|
|
15
|
+
import { join } from 'node:path';
|
|
16
|
+
const STACK_BIN = 'stack';
|
|
17
|
+
const TIMEOUT_MS = 5_000;
|
|
18
|
+
/** Whether the `stack` CLI is on PATH. Never throws. */
|
|
19
|
+
export function stackInstalled() {
|
|
20
|
+
try {
|
|
21
|
+
const probe = process.platform === 'win32' ? 'where' : 'which';
|
|
22
|
+
return spawnSync(probe, [STACK_BIN], { stdio: 'ignore' }).status === 0;
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/** Whether a repo has a committed stack config (.stack.toml). Never throws. */
|
|
29
|
+
export function stackProjectConfigured(repo) {
|
|
30
|
+
try {
|
|
31
|
+
return existsSync(join(repo, '.stack.toml'));
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Read `stack status --json` for a repo (best-effort). ok:false (never throws)
|
|
39
|
+
* when stack is absent, errors, or times out. Tolerates an unparsable payload
|
|
40
|
+
* (returns ok:true with an empty service list).
|
|
41
|
+
*/
|
|
42
|
+
export function stackStatus(repo) {
|
|
43
|
+
if (!stackInstalled())
|
|
44
|
+
return { ok: false, detail: 'stack not installed' };
|
|
45
|
+
try {
|
|
46
|
+
const res = spawnSync(STACK_BIN, ['status', '--json'], {
|
|
47
|
+
cwd: repo,
|
|
48
|
+
encoding: 'utf8',
|
|
49
|
+
timeout: TIMEOUT_MS,
|
|
50
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
51
|
+
env: { ...process.env },
|
|
52
|
+
});
|
|
53
|
+
if (res.status !== 0 || res.error) {
|
|
54
|
+
return { ok: false, detail: `stack status exit ${res.status ?? 'error'}` };
|
|
55
|
+
}
|
|
56
|
+
const out = (res.stdout ?? '').trim();
|
|
57
|
+
try {
|
|
58
|
+
const parsed = JSON.parse(out);
|
|
59
|
+
const raw = parsed['services'];
|
|
60
|
+
const services = Array.isArray(raw)
|
|
61
|
+
? raw
|
|
62
|
+
.map((s) => (typeof s === 'string' ? s : s?.['name']))
|
|
63
|
+
.filter((s) => typeof s === 'string' && s.length > 0)
|
|
64
|
+
: [];
|
|
65
|
+
return { ok: true, services, detail: `${services.length} service(s)` };
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
return { ok: true, services: [], detail: 'stack reachable (status not JSON-parseable)' };
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
return { ok: false, detail: err instanceof Error ? err.message : String(err) };
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Run `stack <args>` and return {ok, stdout, code}. Never throws. Bounded by
|
|
77
|
+
* TIMEOUT_MS. Mutating actions (add / apply) MUST be gated by the CLI layer
|
|
78
|
+
* (cmdStack) BEFORE this is called — this runner is intentionally neutral.
|
|
79
|
+
*
|
|
80
|
+
* @param args Arguments to pass to the `stack` binary (e.g. ['add', 'postgres']).
|
|
81
|
+
* @param opts.cwd Optional working directory (default: process.cwd()).
|
|
82
|
+
*/
|
|
83
|
+
export function stackRun(args, opts) {
|
|
84
|
+
if (!stackInstalled()) {
|
|
85
|
+
return { ok: false, stdout: '', code: null };
|
|
86
|
+
}
|
|
87
|
+
try {
|
|
88
|
+
const res = spawnSync(STACK_BIN, args, {
|
|
89
|
+
cwd: opts?.cwd,
|
|
90
|
+
encoding: 'utf8',
|
|
91
|
+
timeout: TIMEOUT_MS,
|
|
92
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
93
|
+
env: { ...process.env },
|
|
94
|
+
});
|
|
95
|
+
if (res.error) {
|
|
96
|
+
return { ok: false, stdout: '', code: null };
|
|
97
|
+
}
|
|
98
|
+
const stdout = (res.stdout ?? '').trimEnd();
|
|
99
|
+
const code = res.status ?? null;
|
|
100
|
+
return { ok: code === 0, stdout, code };
|
|
101
|
+
}
|
|
102
|
+
catch (err) {
|
|
103
|
+
void err;
|
|
104
|
+
return { ok: false, stdout: '', code: null };
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=stack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stack.js","sourceRoot":"","sources":["../../../src/core/integrations/stack.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,SAAS,GAAG,OAAO,CAAC;AAC1B,MAAM,UAAU,GAAG,KAAK,CAAC;AAEzB,wDAAwD;AACxD,MAAM,UAAU,cAAc;IAC5B,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QAC/D,OAAO,SAAS,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;IACzE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,sBAAsB,CAAC,IAAY;IACjD,IAAI,CAAC;QACH,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AASD;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,IAAa;IACvC,IAAI,CAAC,cAAc,EAAE;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC;IAC3E,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE;YACrD,GAAG,EAAE,IAAI;YACT,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,UAAU;YACnB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;YACnC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE;SACxB,CAAC,CAAC;QACH,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YAClC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB,GAAG,CAAC,MAAM,IAAI,OAAO,EAAE,EAAE,CAAC;QAC7E,CAAC;QACD,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;YAC1D,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;YAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;gBACjC,CAAC,CAAC,GAAG;qBACA,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAG,CAA6B,EAAE,CAAC,MAAM,CAAwB,CAAC,CAAC;qBAC1G,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;gBACtE,CAAC,CAAC,EAAE,CAAC;YACP,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,aAAa,EAAE,CAAC;QACzE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,6CAA6C,EAAE,CAAC;QAC3F,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IACjF,CAAC;AACH,CAAC;AAeD;;;;;;;GAOG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAc,EAAE,IAAuB;IAC9D,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;QACtB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC/C,CAAC;IACD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE;YACrC,GAAG,EAAE,IAAI,EAAE,GAAG;YACd,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,UAAU;YACnB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;YACjC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE;SACxB,CAAC,CAAC;QACH,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YACd,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC/C,CAAC;QACD,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QAC5C,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC;QAChC,OAAO,EAAE,EAAE,EAAE,IAAI,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC1C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,KAAK,GAAG,CAAC;QACT,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC/C,CAAC;AACH,CAAC"}
|