@xgent-ai/skills 0.1.0 → 0.3.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/README.md +38 -2
- package/bin/xgent-skills.js +515 -4
- package/package.json +7 -3
- package/skills/dev-plan/SKILL.md +113 -93
- package/skills/dev-plan/references/architecture-quality.md +141 -0
- package/skills/dev-plan/references/execution-workflow.md +78 -0
- package/skills/dev-plan/references/plan-skeleton.md +238 -78
- package/skills/dev-plan/scripts/check_progress.sh +158 -0
- package/skills/elintp/SKILL.md +129 -0
- package/skills/grafton-view-dev/SKILL.md +195 -0
- package/skills/grafton-view-dev/references/bindings.md +120 -0
- package/skills/grafton-view-dev/references/components.md +168 -0
- package/skills/grafton-view-dev/references/recipes.md +208 -0
- package/skills/grafton-view-dev/references/schema.md +86 -0
- package/skills/grafton-view-dev/references/stores.md +310 -0
- package/skills/pardon/SKILL.md +30 -0
- package/skills/portal-app-exchange/SKILL.md +106 -0
- package/skills/portal-backend-app/SKILL.md +56 -0
- package/skills/portal-backend-app/references/gate-and-tokens.md +93 -0
- package/skills/portal-backend-app/references/wiring-and-conventions.md +71 -0
- package/skills/portal-dev-setup/SKILL.md +519 -0
- package/skills/portal-dev-setup/puller.env.example +74 -0
- package/skills/portal-dev-setup/references/troubleshooting.md +167 -0
- package/skills/portal-dev-setup/scripts/onebox.sh +966 -0
- package/skills/portal-external-app/SKILL.md +273 -0
- package/skills/portal-external-app/references/contract-doc-template.md +96 -0
- package/skills/portal-external-app/references/health-contract.md +80 -0
- package/skills/portal-external-app/references/integration-contract.md +130 -0
- package/skills/portal-external-app/references/quota-and-seats.md +213 -0
- package/skills/portal-external-app/references/registration-and-onebox.md +259 -0
- package/skills/portal-external-app/scripts/health-verdict.ts +22 -0
- package/skills/portal-external-app/scripts/verify-health.ts +27 -0
- package/skills/portal-logging/SKILL.md +139 -0
- package/skills/portal-logging/references/collectors.md +285 -0
- package/skills/portal-logging/references/contract.md +95 -0
- package/skills/portal-logging/scripts/smoke-ingest.sh +72 -0
- package/skills/portal-micro-app/SKILL.md +83 -0
- package/skills/portal-micro-app/references/manifest-and-acl.md +79 -0
- package/skills/portal-micro-app/references/open-api-and-extensions.md +86 -0
- package/skills/portal-micro-app/references/sdk-reference.md +208 -0
- package/skills/prd/SKILL.md +212 -0
- package/skills/prd/references/prd-skeleton.md +244 -0
- package/skills/prd/references/spms-mapping.md +148 -0
- package/skills/react/SKILL.md +103 -0
- package/skills/react/references/component-patterns.md +275 -0
- package/skills/react/references/data-fetching.md +255 -0
- package/skills/react/references/effect-patterns.md +407 -0
- package/skills/react/references/js-performance.md +432 -0
- package/skills/react/references/rendering-performance.md +351 -0
- package/skills/react/references/rerender-optimization.md +578 -0
- package/skills/rust/SKILL.md +103 -0
- package/skills/rust/references/chapter_01.md +564 -0
- package/skills/rust/references/chapter_02.md +117 -0
- package/skills/rust/references/chapter_03.md +209 -0
- package/skills/rust/references/chapter_04.md +183 -0
- package/skills/rust/references/chapter_05.md +390 -0
- package/skills/rust/references/chapter_06.md +142 -0
- package/skills/rust/references/chapter_07.md +226 -0
- package/skills/rust/references/chapter_08.md +257 -0
- package/skills/rust/references/chapter_09.md +261 -0
- package/skills/rust/references/chapter_10.md +554 -0
- package/skills/story-points/SKILL.md +219 -0
- package/skills/story-points/references/factors.md +367 -0
- package/skills/summarize/SKILL.md +79 -0
- package/skills/swarm/SKILL.md +263 -0
- package/skills/swarm/evals/evals.json +55 -0
- package/skills/swarm/references/agent-types.md +260 -0
- package/skills/swarm/references/teams/code-audit.md +81 -0
- package/skills/swarm/references/teams/debug-race.md +70 -0
- package/skills/swarm/references/teams/feature-dev.md +71 -0
- package/skills/swarm/references/teams/product.md +114 -0
- package/skills/swarm/references/teams/refactor-migration.md +73 -0
- package/skills/swarm/references/teams/research-debate.md +73 -0
- package/skills/test-plan/SKILL.md +136 -0
- package/skills/test-plan/references/case-taxonomy.md +141 -0
- package/skills/working-with-mbx/SKILL.md +343 -0
- package/skills/working-with-mbx/references/acknowledgements.md +37 -0
- package/skills/working-with-mbx/references/benchmarks.md +140 -0
- package/skills/working-with-mbx/references/cache-results.md +153 -0
- package/skills/working-with-mbx/references/cache-server.md +151 -0
- package/skills/working-with-mbx/references/cli/adopt.md +29 -0
- package/skills/working-with-mbx/references/cli/cache/dir.md +24 -0
- package/skills/working-with-mbx/references/cli/cache/export.md +31 -0
- package/skills/working-with-mbx/references/cli/cache/import.md +27 -0
- package/skills/working-with-mbx/references/cli/cache/largest.md +26 -0
- package/skills/working-with-mbx/references/cli/cache/projects.md +23 -0
- package/skills/working-with-mbx/references/cli/cache/remove.md +30 -0
- package/skills/working-with-mbx/references/cli/cache/stats.md +24 -0
- package/skills/working-with-mbx/references/cli/cache/trace.md +27 -0
- package/skills/working-with-mbx/references/cli/cache/verify.md +23 -0
- package/skills/working-with-mbx/references/cli/cache.md +35 -0
- package/skills/working-with-mbx/references/cli/clean.md +27 -0
- package/skills/working-with-mbx/references/cli/completion.md +27 -0
- package/skills/working-with-mbx/references/cli/doctor.md +24 -0
- package/skills/working-with-mbx/references/cli/exec.md +28 -0
- package/skills/working-with-mbx/references/cli/explain.md +29 -0
- package/skills/working-with-mbx/references/cli/gc.md +28 -0
- package/skills/working-with-mbx/references/cli/prefetch.md +27 -0
- package/skills/working-with-mbx/references/cli/setup.md +28 -0
- package/skills/working-with-mbx/references/cli/stats.md +24 -0
- package/skills/working-with-mbx/references/cli/tui.md +24 -0
- package/skills/working-with-mbx/references/cli.md +58 -0
- package/skills/working-with-mbx/references/compared.md +67 -0
- package/skills/working-with-mbx/references/configuration.md +724 -0
- package/skills/working-with-mbx/references/cookbook/fork-prs.md +82 -0
- package/skills/working-with-mbx/references/cookbook/local-development.md +127 -0
- package/skills/working-with-mbx/references/cookbook/migrate.md +67 -0
- package/skills/working-with-mbx/references/dashboard.md +89 -0
- package/skills/working-with-mbx/references/faq.md +75 -0
- package/skills/working-with-mbx/references/getting-started.md +147 -0
- package/skills/working-with-mbx/references/github-action.md +254 -0
- package/skills/working-with-mbx/references/guide.md +59 -0
- package/skills/working-with-mbx/references/how-it-works.md +86 -0
- package/skills/working-with-mbx/references/incremental.md +78 -0
- package/skills/working-with-mbx/references/index.md +57 -0
- package/skills/working-with-mbx/references/installation.md +101 -0
- package/skills/working-with-mbx/references/limits.md +182 -0
- package/skills/working-with-mbx/references/linkers.md +75 -0
- package/skills/working-with-mbx/references/managed-targets.md +197 -0
- package/skills/working-with-mbx/references/protocol-compatibility.md +103 -0
- package/skills/working-with-mbx/references/remote-cache.md +190 -0
- package/skills/working-with-mbx/references/scheduling.md +65 -0
- package/skills/working-with-mbx/references/setup.md +157 -0
- package/skills/working-with-mbx/references/stability.md +43 -0
- package/skills/working-with-mbx/references/standalone-builds.md +102 -0
- package/skills/working-with-mbx/references/stats.md +49 -0
- package/skills/working-with-mbx/references/troubleshooting.md +136 -0
- package/skills/working-with-mbx/references/tui.md +163 -0
- package/skills/working-with-mbx/update-docs.sh +49 -0
- package/skills/working-with-mise/SKILL.md +297 -0
- package/skills/working-with-mise/references/cli/activate-html.md +90 -0
- package/skills/working-with-mise/references/cli/alias-html.md +30 -0
- package/skills/working-with-mise/references/cli/backends-html.md +40 -0
- package/skills/working-with-mise/references/cli/bin-paths-html.md +37 -0
- package/skills/working-with-mise/references/cli/bootstrap-html.md +109 -0
- package/skills/working-with-mise/references/cli/cache-html.md +40 -0
- package/skills/working-with-mise/references/cli/completion-html.md +76 -0
- package/skills/working-with-mise/references/cli/config-html.md +44 -0
- package/skills/working-with-mise/references/cli/daemons-html.md +48 -0
- package/skills/working-with-mise/references/cli/deactivate-html.md +47 -0
- package/skills/working-with-mise/references/cli/deps-html.md +89 -0
- package/skills/working-with-mise/references/cli/doctor-html.md +46 -0
- package/skills/working-with-mise/references/cli/dotfiles-html.md +57 -0
- package/skills/working-with-mise/references/cli/edit-html.md +48 -0
- package/skills/working-with-mise/references/cli/en-html.md +62 -0
- package/skills/working-with-mise/references/cli/env-html.md +57 -0
- package/skills/working-with-mise/references/cli/exec-html.md +79 -0
- package/skills/working-with-mise/references/cli/exec.md +79 -0
- package/skills/working-with-mise/references/cli/fmt-html.md +44 -0
- package/skills/working-with-mise/references/cli/generate-html.md +43 -0
- package/skills/working-with-mise/references/cli/implode-html.md +35 -0
- package/skills/working-with-mise/references/cli/install-html.md +83 -0
- package/skills/working-with-mise/references/cli/install-into-html.md +47 -0
- package/skills/working-with-mise/references/cli/latest-html.md +62 -0
- package/skills/working-with-mise/references/cli/link-html.md +57 -0
- package/skills/working-with-mise/references/cli/lock-html.md +114 -0
- package/skills/working-with-mise/references/cli/ls-html.md +95 -0
- package/skills/working-with-mise/references/cli/ls-remote-html.md +61 -0
- package/skills/working-with-mise/references/cli/mcp-html.md +57 -0
- package/skills/working-with-mise/references/cli/oci-html.md +41 -0
- package/skills/working-with-mise/references/cli/outdated-html.md +79 -0
- package/skills/working-with-mise/references/cli/packslip-html.md +38 -0
- package/skills/working-with-mise/references/cli/patrons-html.md +45 -0
- package/skills/working-with-mise/references/cli/plugins-html.md +46 -0
- package/skills/working-with-mise/references/cli/prune-html.md +56 -0
- package/skills/working-with-mise/references/cli/registry-html.md +59 -0
- package/skills/working-with-mise/references/cli/reshim-html.md +46 -0
- package/skills/working-with-mise/references/cli/run-html.md +152 -0
- package/skills/working-with-mise/references/cli/search-html.md +69 -0
- package/skills/working-with-mise/references/cli/self-update-html.md +42 -0
- package/skills/working-with-mise/references/cli/set-html.md +116 -0
- package/skills/working-with-mise/references/cli/settings-html.md +78 -0
- package/skills/working-with-mise/references/cli/shell-alias-html.md +39 -0
- package/skills/working-with-mise/references/cli/shell-html.md +53 -0
- package/skills/working-with-mise/references/cli/skills-html.md +39 -0
- package/skills/working-with-mise/references/cli/sponsors-html.md +31 -0
- package/skills/working-with-mise/references/cli/ssh-html.md +45 -0
- package/skills/working-with-mise/references/cli/sync-html.md +37 -0
- package/skills/working-with-mise/references/cli/tasks-html.md +61 -0
- package/skills/working-with-mise/references/cli/test-tool-html.md +49 -0
- package/skills/working-with-mise/references/cli/token-html.md +37 -0
- package/skills/working-with-mise/references/cli/tool-alias-html.md +41 -0
- package/skills/working-with-mise/references/cli/tool-html.md +55 -0
- package/skills/working-with-mise/references/cli/tool-stub-html.md +60 -0
- package/skills/working-with-mise/references/cli/trust-html.md +63 -0
- package/skills/working-with-mise/references/cli/uninstall-html.md +62 -0
- package/skills/working-with-mise/references/cli/unset-html.md +59 -0
- package/skills/working-with-mise/references/cli/untrust-html.md +35 -0
- package/skills/working-with-mise/references/cli/unuse-html.md +74 -0
- package/skills/working-with-mise/references/cli/upgrade-html.md +133 -0
- package/skills/working-with-mise/references/cli/use-html.md +130 -0
- package/skills/working-with-mise/references/cli/use.md +130 -0
- package/skills/working-with-mise/references/cli/version-html.md +46 -0
- package/skills/working-with-mise/references/cli/watch-html.md +465 -0
- package/skills/working-with-mise/references/cli/where-html.md +53 -0
- package/skills/working-with-mise/references/cli/which-html.md +55 -0
- package/skills/working-with-mise/references/configuration/environments-html.md +171 -0
- package/skills/working-with-mise/references/configuration/project-diagnostics-html.md +93 -0
- package/skills/working-with-mise/references/configuration/settings-html.md +3062 -0
- package/skills/working-with-mise/references/configuration/vars-html.md +167 -0
- package/skills/working-with-mise/references/dev-tools/aliases-html.md +97 -0
- package/skills/working-with-mise/references/dev-tools/backend_architecture-html.md +198 -0
- package/skills/working-with-mise/references/dev-tools/backends/aqua-html.md +274 -0
- package/skills/working-with-mise/references/dev-tools/backends/aqua.md +274 -0
- package/skills/working-with-mise/references/dev-tools/backends/asdf-html.md +98 -0
- package/skills/working-with-mise/references/dev-tools/backends/asdf.md +98 -0
- package/skills/working-with-mise/references/dev-tools/backends/cargo-html.md +240 -0
- package/skills/working-with-mise/references/dev-tools/backends/cargo.md +240 -0
- package/skills/working-with-mise/references/dev-tools/backends/conda-html.md +125 -0
- package/skills/working-with-mise/references/dev-tools/backends/dotnet-html.md +142 -0
- package/skills/working-with-mise/references/dev-tools/backends/forgejo-html.md +533 -0
- package/skills/working-with-mise/references/dev-tools/backends/gem-html.md +77 -0
- package/skills/working-with-mise/references/dev-tools/backends/gem.md +77 -0
- package/skills/working-with-mise/references/dev-tools/backends/github-html.md +622 -0
- package/skills/working-with-mise/references/dev-tools/backends/github.md +622 -0
- package/skills/working-with-mise/references/dev-tools/backends/gitlab-html.md +546 -0
- package/skills/working-with-mise/references/dev-tools/backends/go-html.md +115 -0
- package/skills/working-with-mise/references/dev-tools/backends/go.md +115 -0
- package/skills/working-with-mise/references/dev-tools/backends/http-html.md +644 -0
- package/skills/working-with-mise/references/dev-tools/backends/http.md +644 -0
- package/skills/working-with-mise/references/dev-tools/backends/npm-html.md +436 -0
- package/skills/working-with-mise/references/dev-tools/backends/npm.md +436 -0
- package/skills/working-with-mise/references/dev-tools/backends/packslip-html.md +310 -0
- package/skills/working-with-mise/references/dev-tools/backends/pipx-html.md +329 -0
- package/skills/working-with-mise/references/dev-tools/backends/pipx.md +329 -0
- package/skills/working-with-mise/references/dev-tools/backends/pkgx-html.md +73 -0
- package/skills/working-with-mise/references/dev-tools/backends/pypi-html.md +331 -0
- package/skills/working-with-mise/references/dev-tools/backends/s3-html.md +346 -0
- package/skills/working-with-mise/references/dev-tools/backends/spm-html.md +201 -0
- package/skills/working-with-mise/references/dev-tools/backends/ubi-html.md +232 -0
- package/skills/working-with-mise/references/dev-tools/backends/vfox-html.md +173 -0
- package/skills/working-with-mise/references/dev-tools/backends/vfox.md +173 -0
- package/skills/working-with-mise/references/dev-tools/backends.md +32 -0
- package/skills/working-with-mise/references/dev-tools/comparison-to-asdf-html.md +112 -0
- package/skills/working-with-mise/references/dev-tools/deps-html.md +390 -0
- package/skills/working-with-mise/references/dev-tools/github-tokens-html.md +390 -0
- package/skills/working-with-mise/references/dev-tools/index-html.md +420 -0
- package/skills/working-with-mise/references/dev-tools/mise-lock-html.md +660 -0
- package/skills/working-with-mise/references/dev-tools/mise-oci-html.md +418 -0
- package/skills/working-with-mise/references/dev-tools/packslip-resources-html.md +203 -0
- package/skills/working-with-mise/references/dev-tools/packslip-verification-html.md +178 -0
- package/skills/working-with-mise/references/dev-tools/shims-html.md +397 -0
- package/skills/working-with-mise/references/dev-tools/tool-stubs-html.md +416 -0
- package/skills/working-with-mise/references/guides/getting-started.md +268 -0
- package/skills/working-with-mise/references/index.md +37 -0
- package/skills/working-with-mise/update-docs.sh +111 -0
- package/skills/xgent-app-release/SKILL.md +438 -0
- package/skills/xgent-app-release/references/build-and-package.md +65 -0
- package/skills/xgent-app-release/references/publish-api.md +315 -0
- package/skills/xgent-app-release/references/troubleshooting.md +108 -0
- package/skills/xgent-app-release/scripts/npm-token.mjs +94 -0
- package/skills/xgent-app-release/scripts/preflight.mjs +340 -0
- package/skills/xgent-app-release/scripts/registry-config.mjs +88 -0
- package/skills/xgent-image-push/SKILL.md +239 -0
- package/skills/xgent-image-push/registry.env.example +51 -0
- package/skills/xgent-image-push/scripts/push-image.sh +576 -0
- package/skills/xgent-init/SKILL.md +96 -0
- package/skills/xgent-init/references/external-app-CLAUDE.template.md +249 -0
- package/skills/xgent-init/references/external-app-DESIGN.template.md +317 -0
- package/skills/xgent-init/references/external-app-PRODUCT.template.md +87 -0
- package/skills/xgent-init/references/fill-guide.md +78 -0
- package/skills/xgent-init/scripts/check-docs.mjs +304 -0
- package/vendor/impeccable/LICENSE +191 -0
- package/vendor/impeccable/NOTICE.md +11 -0
- package/vendor/impeccable/VERSION.json +28 -0
- package/vendor/impeccable/bundle/blobs/00023f9e7f2e27604fde978b56510a8f837b76eeadd93221d11adcf4c98f1a10 +88 -0
- package/vendor/impeccable/bundle/blobs/00f053b877a92a9847d69eec2403e40c757152f30a5ca807c5033c58d7c297f1 +33 -0
- package/vendor/impeccable/bundle/blobs/012f548547fae48ebdd22a3c3af8a01032641fddd530e3783bd73b7358ab2c49 +80 -0
- package/vendor/impeccable/bundle/blobs/015725eeca94f52bffd2132d4cb49bc3eb1ee76e6ac7378c065e629d59f56613 +84 -0
- package/vendor/impeccable/bundle/blobs/03b30331c176a248a3b3bd17abdff1a1fd658f09ffb2a412b36ae9627dd3f33b +105 -0
- package/vendor/impeccable/bundle/blobs/041535231366047a0beeb5daa64ea9c23d5a566580f7dafdb8c0623cb4a7e76b +24 -0
- package/vendor/impeccable/bundle/blobs/04af9f2d6883fe76f9539d310d9c369052822a24886d2c330ab1e3fe5981c8a1 +24 -0
- package/vendor/impeccable/bundle/blobs/058f81f256134841875fd3183e06b37a023de0c877fd2b9eecd97011640791fe +46 -0
- package/vendor/impeccable/bundle/blobs/05aa836a190f4ff62e5d4619738bdb891d83d85e35d81c2e6e322d1dc084d802 +80 -0
- package/vendor/impeccable/bundle/blobs/05e86f37d7fa381c5e8a04b6212490a27904d3be3e9384862a0764d3daba6d78 +54 -0
- package/vendor/impeccable/bundle/blobs/0617b37a905f0486c1ab4e91a287c8ef8292e253095c340f452d591206272f73 +104 -0
- package/vendor/impeccable/bundle/blobs/074575671f24cf4298d06f0019f76e94f62e9a6ed205fce05b8e507341e64266 +111 -0
- package/vendor/impeccable/bundle/blobs/076a31941acbaa81013c8c511e146ed4138128eb5e9895dae3e9a27a25ac4f04 +13 -0
- package/vendor/impeccable/bundle/blobs/08812a8618de7bd2f63a51298e9c2558031237e8efba280062ccb636101e25e1 +80 -0
- package/vendor/impeccable/bundle/blobs/08a2980eae0bfea1f00229899defc28ec92c7ecb875bf5fb02e4ba80dad6c394 +806 -0
- package/vendor/impeccable/bundle/blobs/08d78eb31c561256f83baa0afa742a660f1467aa2c81be2f60c2b7f9c770d66e +54 -0
- package/vendor/impeccable/bundle/blobs/098a891028ce59c212b747d3c70468dd750aff7053a703d1336045ed31e0da7c +70 -0
- package/vendor/impeccable/bundle/blobs/0a151a54959a15eb32fa338890d5d64ac48a9d54d2d5442c3c7708a4c27c1858 +104 -0
- package/vendor/impeccable/bundle/blobs/0bb4085f6dda702846e0e56bd4f797aa1b046ab48eca02644448e368f3820f88 +104 -0
- package/vendor/impeccable/bundle/blobs/0bc7d7971b3edf2acd0580e847458dc6d84129d90715b452799ace3bed815c7c +84 -0
- package/vendor/impeccable/bundle/blobs/0bf6f08bf34d24cd88a78d544add9e4d71478bcf939926cde32f4e164882c775 +105 -0
- package/vendor/impeccable/bundle/blobs/0dbbef70048cc3ae44e6710ff09992ce14ad049ce8ed519b0ff8a1ddb4633f4e +111 -0
- package/vendor/impeccable/bundle/blobs/0e081d496eba4bd77aca81723d59120c10177a71c9551a60ab923c356fb3cf38 +104 -0
- package/vendor/impeccable/bundle/blobs/0e1819750e5448311a051d35ab6d0be0830418f78ca872ef10469fafebb27d4f +46 -0
- package/vendor/impeccable/bundle/blobs/0e18ac33b7e6a247b658fcaf926d9eac028399597dbaba366f1d2f2b884a383b +325 -0
- package/vendor/impeccable/bundle/blobs/0f83648f6b425225290305bced51eacebacf9bf9bc05e21cdbad46863fbc89ce +24 -0
- package/vendor/impeccable/bundle/blobs/115e1c3f1b58b5129910ed925dbf65d61d5ac4c2036618847555ce40098aae97 +145 -0
- package/vendor/impeccable/bundle/blobs/11f75834c26ecd8a5b0afdf696e838953b235dc4835b7293bbc6b1bc27dd3106 +84 -0
- package/vendor/impeccable/bundle/blobs/12c1afcd15e86d840b89a78c6d17ce6d1b5609bac713d59271c6ab5932975dac +111 -0
- package/vendor/impeccable/bundle/blobs/12d2a8043ae8668ad29c32bfa92995849fc49cb016e6ebd4f7e59539d96e7b03 +46 -0
- package/vendor/impeccable/bundle/blobs/12fefe52d80d25014e5f7e2f9b278275a675653d3d99ae8f0ecf344cdb9abbe6 +111 -0
- package/vendor/impeccable/bundle/blobs/13bd27aa8573e6d45d8bbf9f3fc991e4719d28a7e8f709009a4a5a49a227fff3 +37 -0
- package/vendor/impeccable/bundle/blobs/1484a7ae206ab4f0e6262b21afe0f6307a629ed27d28fb7de69536a6800a4883 +37 -0
- package/vendor/impeccable/bundle/blobs/15b4837dccb27d7382e2f134ef050b244c4488b1906e0308f288112183cc09ac +145 -0
- package/vendor/impeccable/bundle/blobs/1640c70b984a43e729d72d046109f87243ae84ecd64d2600a007d140558123cc +80 -0
- package/vendor/impeccable/bundle/blobs/1652d639d91889a08bda7f351456c43ee30e5677aa4866a90f375e1e4be15deb +80 -0
- package/vendor/impeccable/bundle/blobs/16d99e9fe8e75d69042bc4fda12e93daa7e10f9fa6c00b12b0f0580b119a4cfd +105 -0
- package/vendor/impeccable/bundle/blobs/171777f8a8596d2ffdb43f4b935a7c6c12859ace233967f868a566390a59708e +325 -0
- package/vendor/impeccable/bundle/blobs/173dd66abe65633910dcb04a51f40d6ff2a793f87088f022a02fc4cad24dd133 +94 -0
- package/vendor/impeccable/bundle/blobs/17c583cf8ad41266ea1e787b666b9d91fe13469d3d0f6af57c08e0146f9b17ac +58 -0
- package/vendor/impeccable/bundle/blobs/181e814c1b9317098b2300c1b02ad0d137b6d82bd1e7e8cc64de4d00b4c50c25 +111 -0
- package/vendor/impeccable/bundle/blobs/190a4e642ca362d7499f3c3ab123e21f18f75457d11f072b545a183f296e6495 +99 -0
- package/vendor/impeccable/bundle/blobs/1971edc3784273bd8da7b1980779c6159471e857992faa6637178109cb130503 +806 -0
- package/vendor/impeccable/bundle/blobs/199d5d3db1197e053a2eb9c3cb927d44cbaaaeb57745c1ada3fd775ba50d9291 +104 -0
- package/vendor/impeccable/bundle/blobs/19c5bfce570a0e2bddd4d9c788936ff9070c90299363c4853ba77bfd37306e20 +416 -0
- package/vendor/impeccable/bundle/blobs/1a9180cec754f8afd354e7cb759750247e97c5bd26d3242ad4c45e315069e8c0 +37 -0
- package/vendor/impeccable/bundle/blobs/1c804990fd8ac23a4b19c42972b5ae591d17f620d0006f0f32927c8db5d5bf50 +145 -0
- package/vendor/impeccable/bundle/blobs/1d72b494f46a60e6c9c06e89bab79789dd85e11f62fb4286a03abf26d352dc1f +80 -0
- package/vendor/impeccable/bundle/blobs/21bc91f6e07691e82b7bba99f9e1d956f9d7a6810dcdc18d231fe73b53a13b23 +37 -0
- package/vendor/impeccable/bundle/blobs/238e1967d933ca5739db708f7ad9f72ca8b34bc4c9b9e1c07b0a06dcf9d00681 +806 -0
- package/vendor/impeccable/bundle/blobs/244e5b7bca6d22a51b4e22104a52a36e477056b03d257b56d1d4e319cd6167a8 +80 -0
- package/vendor/impeccable/bundle/blobs/249f0437a52ab3eb4bc4d4a9f38e085334c0fbb7795e88dd419e32b5f58c924d +42 -0
- package/vendor/impeccable/bundle/blobs/27c4b6c90ad12a186136f9ece9cb1830d4a6e36b11382ab334efc4543f8082de +145 -0
- package/vendor/impeccable/bundle/blobs/29f741b71e75fd39c65ca6df4b01b5f6c4f3c4c7adf23b47a3220ce2c0251f24 +104 -0
- package/vendor/impeccable/bundle/blobs/2b21f0142ee88a11dbe2593362f5a910718a61062e3a64e7ff936ef1e74fd394 +46 -0
- package/vendor/impeccable/bundle/blobs/2b58041cd82d819d12762b10becb95f8253c661bf6a9de40f61fc01c1204b743 +806 -0
- package/vendor/impeccable/bundle/blobs/2b5b2fbf5f658f34ea1997fb1aeebe01604d05187f75c6a4f1f55a5bc78520a4 +104 -0
- package/vendor/impeccable/bundle/blobs/2c2ed6286bd74adef4f24ef442e2e1bc0780d44bc060aa2a4c03a03988dbafd5 +325 -0
- package/vendor/impeccable/bundle/blobs/2d7086992c07df1fc734cdf9c420c4bd8ad409ab7909e07c8b486c303d420732 +83 -0
- package/vendor/impeccable/bundle/blobs/2e4846117a2fcdc1e4bc9570a5333da839649cb8ccdac6a30a87591ca05b4bb0 +54 -0
- package/vendor/impeccable/bundle/blobs/2f02f96f889e0c8e0e90806af1ef17e0c162a6cc402068f434d3f7608d9deda3 +54 -0
- package/vendor/impeccable/bundle/blobs/2fd096823e4a93f19edd421a69e10f90ebb630a014c673d1802a927c6f47b7d2 +111 -0
- package/vendor/impeccable/bundle/blobs/2feb3768125ba6469c92a50d516727e6d42f44579165ddfd33409948e2a3803d +27 -0
- package/vendor/impeccable/bundle/blobs/30e006fdee873bac23edaeadce0371161625e021e3cf442dff4b05bb82297ba1 +24 -0
- package/vendor/impeccable/bundle/blobs/31b90048c0b540daec46762a10c2b6b6434737a89af005054d8b848d829d003b +69 -0
- package/vendor/impeccable/bundle/blobs/33b6b32c0c3c0c4a2b22bd2275176b1c88a006dd94592a854f629911a0b21cdc +111 -0
- package/vendor/impeccable/bundle/blobs/3565d038a2eeab88a8b18ff52e6630008ab30f867f9df922a38ce8980440b2e3 +80 -0
- package/vendor/impeccable/bundle/blobs/356cfa0ebf61589cf5d52691d101a69d69256062fe1d11d71d95d41a78289cbd +111 -0
- package/vendor/impeccable/bundle/blobs/3673248740bcdd1122ccc610093ba2fe52f3943a61ce0b7170b74dc49e5b6098 +416 -0
- package/vendor/impeccable/bundle/blobs/37080ea5e5b381adb7eae7a427231b0ad0dee0f0916fc1d6b673b7101a5b425b +42 -0
- package/vendor/impeccable/bundle/blobs/3753448bca49da76dd8b12d5a8b4264414673f26e49028d37616faa8beb210b7 +127 -0
- package/vendor/impeccable/bundle/blobs/37565671b09d983ea1ad83a9e9190bc37255d93c68445958c6facecc7e0f7c4f +33 -0
- package/vendor/impeccable/bundle/blobs/37aeddc0f2031fa89d72519ae2e7542c267872f81786fb8288fca0a49118be11 +27 -0
- package/vendor/impeccable/bundle/blobs/37c9a2122efa64dc8789eb47d196150b0bc635e0ba95042fd381ff157002ed50 +111 -0
- package/vendor/impeccable/bundle/blobs/381ff89aa76e82a0d98456ec31cb117555ae045539fba47c45056daa50f611ca +46 -0
- package/vendor/impeccable/bundle/blobs/3895765e9434400dfc1b30e364be002cf499c1718fb2431e65b907c14ae2cb27 +86 -0
- package/vendor/impeccable/bundle/blobs/38c2e839e130008b6da814ab9c16f3fcbbedfdf721a9638eebd31a9e65341a7a +84 -0
- package/vendor/impeccable/bundle/blobs/38d4d404030c6ea935d3223db1eeb22c45d04a94f41f98e02a43cdc5af7ff2e3 +24 -0
- package/vendor/impeccable/bundle/blobs/3970c8e24615610b0246585e49146f6762d5082b3c8fddc08a00940d6e72d394 +80 -0
- package/vendor/impeccable/bundle/blobs/39ac044f2e45a9e7eed8eb68fe91d32938160eb7f8fa93d2afc42fc80a0c3c10 +54 -0
- package/vendor/impeccable/bundle/blobs/39d9600489073e227e4f4d55c451ce4252a6632ed7ae37923efbbcbc91f16d07 +206 -0
- package/vendor/impeccable/bundle/blobs/3aa908c18db91d5f31d6bba6402eab6afc4e0b75137f841a86bd012386e0d8e2 +145 -0
- package/vendor/impeccable/bundle/blobs/3af7c46309f748ff3845f16455a431ec0e9e807e5e3a965e96e9ee75a1198eb8 +95 -0
- package/vendor/impeccable/bundle/blobs/3ba92d4aa840ec1b6c2fda224339489d6dd65eedf43bb45836af02584d1faa88 +42 -0
- package/vendor/impeccable/bundle/blobs/3bcf81b938a0f0309e9ed6616f4bd18d82f07e2801411ee4cce51220d417eb95 +80 -0
- package/vendor/impeccable/bundle/blobs/3bf5d8661351831dbb2195e3b677fea1f128ca319c0589d538b66d9c9d7dddbc +111 -0
- package/vendor/impeccable/bundle/blobs/3dd45e1c32db3d3163a96ef198954905807b25cb9a1d206a7d77986f21d27652 +39 -0
- package/vendor/impeccable/bundle/blobs/3e3b6fdc6afbc2c2a734d08d6a18b393b7139c56f28f91f82e13e5555b98018a +84 -0
- package/vendor/impeccable/bundle/blobs/3f2c351303b74e217907006fb9c55ada2ef596e9710c13d631e20506d17b9ee8 +325 -0
- package/vendor/impeccable/bundle/blobs/402373ef95962ecb81dd3d7cf70ecb3bd3e22a2bd2aabb4c0d76f7f4f9447870 +105 -0
- package/vendor/impeccable/bundle/blobs/402656ca6df17bad1cd55ede0a966a7bb5b187cf4f89c517851f9efe7f14c0fd +87 -0
- package/vendor/impeccable/bundle/blobs/40c87038b5f75147a5952a96237acf312a327bf70c1bcd8e0a5f064625ae9668 +51 -0
- package/vendor/impeccable/bundle/blobs/420d82fe41884b7aa8c28750520146d8160c91396ac332a96b2d82a90b017fb2 +80 -0
- package/vendor/impeccable/bundle/blobs/420e2fdee2b7f555d9a37ce348cf62610ddd98f96b1a0a511796ba600881588c +111 -0
- package/vendor/impeccable/bundle/blobs/424b2e75cb204e2dca7db4a40dfe5a81f78dc0fc58ac4790e8b7bbf2f330bba4 +37 -0
- package/vendor/impeccable/bundle/blobs/424ff273e7ab283d6695d127bb502675627193f5b752d7b43b7524bcfc42f43f +84 -0
- package/vendor/impeccable/bundle/blobs/426c7f5437dd3c23a4cfaef6964dc7f1e038480f92238499b85f3ce7e4472bf4 +111 -0
- package/vendor/impeccable/bundle/blobs/42a71df98075f66e6eb396b69ef3d6b1c3db46d1c1d24b4edc9d15f53d193ecb +111 -0
- package/vendor/impeccable/bundle/blobs/433a79eee3ce4c99e79a7aebe3a6d8ec9ff70216772e0c2ff9dce3a01d672963 +46 -0
- package/vendor/impeccable/bundle/blobs/43852ca5917de66704f73f9019d15482bb1efd92f2eefaeeeae23610b4c0c6a0 +38 -0
- package/vendor/impeccable/bundle/blobs/442749aed338f51c1a3ccfb182c6ade9b74b90590b67984062ac94a5b100e914 +80 -0
- package/vendor/impeccable/bundle/blobs/44a91b3f0810f43829d8584e912812444d15614e4b57ca8070aee7ab899f7c1e +46 -0
- package/vendor/impeccable/bundle/blobs/46250caaec1bd69619a5b28a73cb3c845b319d029b0af9228aaa7001e7e0104a +37 -0
- package/vendor/impeccable/bundle/blobs/464c0c2b33d278375aec66caf95518f5e7ccd0aad1bea3f9dd553ed47815daa1 +325 -0
- package/vendor/impeccable/bundle/blobs/47b3461f6f76db80fdc49fc7542552d65fed24edc8d30d903cb76aefbad0ed05 +84 -0
- package/vendor/impeccable/bundle/blobs/47edbdfaf27073c47033d1ac7dfee881be49e2dcbda7671d1157300481dde6da +1 -0
- package/vendor/impeccable/bundle/blobs/4879f38b23d0a251a63cbb0327e660296194cd2e71eb4da3236c6ebfe5807746 +33 -0
- package/vendor/impeccable/bundle/blobs/48bb7c3b738f57fa4f3f714d7e3e919879036f3e751135a9acc1c5ede1850ea6 +54 -0
- package/vendor/impeccable/bundle/blobs/494d6fcb4701c437597c2ed16a9595af92f3d9ad53c944c96a2fb563bd766af5 +99 -0
- package/vendor/impeccable/bundle/blobs/49a7b37b98fb6e3ef68154174677ff4b9f1715efcffdbf6b30c3535b3e4e302c +54 -0
- package/vendor/impeccable/bundle/blobs/4a7d8695741e2cd354baada215b06798c050aa7a8e1ca6814f0e395e054d1ab1 +145 -0
- package/vendor/impeccable/bundle/blobs/4a8a45a46b79948a64b484edf389aa0b00fc80de855470cbabe3c7c71268f345 +828 -0
- package/vendor/impeccable/bundle/blobs/4acfb9e38f6e09f7484e36fc19704d69eab159436ee9329168be74c493042f22 +111 -0
- package/vendor/impeccable/bundle/blobs/4ad7c5d5821f85c2311ff91746d9b9cf272dbe0a9a5b61687f77681f5a13f812 +69 -0
- package/vendor/impeccable/bundle/blobs/4b0e2eea17f297daa06b17578131775be099ef43addf91007f4b7e295454f64f +105 -0
- package/vendor/impeccable/bundle/blobs/4bceaf3346b6f5100b5a54deaae49a38b975dd134df2836675848f06ff1e7e11 +806 -0
- package/vendor/impeccable/bundle/blobs/4ce929b8cafd37247ea4c148bbe39a9afe15908d1abf4a8248c5122275d16499 +85 -0
- package/vendor/impeccable/bundle/blobs/4df48b7a86d525ad12e7889a1fd16b06ed4b25a9470c359c7193a6d82649262f +54 -0
- package/vendor/impeccable/bundle/blobs/4fb6d2fcc8afaf827a7377ddd604725264fd83be871e2d35062e9d1939144404 +25 -0
- package/vendor/impeccable/bundle/blobs/51e2f8963377f142ebdc9864e0ecc5aa1e5b7d344ed72d0e9d748d2d3d8c71b3 +46 -0
- package/vendor/impeccable/bundle/blobs/521391d55814fdef6cd648ed62154a14d77b324004a0fc2d06c0a4e97857eab2 +806 -0
- package/vendor/impeccable/bundle/blobs/52e861ac390a62c4473ae0cf87ff18dd6d721afa6557910492dd8ed28bd9970d +84 -0
- package/vendor/impeccable/bundle/blobs/532d6387db6f5da1a59dc7d29ce4d8ba6ca044626c367dc16e1cb8b981eb2d9a +104 -0
- package/vendor/impeccable/bundle/blobs/54cb270e8826380caefc8c40642a5d973f27df46bfdb762d822541a0c72a9877 +145 -0
- package/vendor/impeccable/bundle/blobs/54e71283cbd5646021fcd8eaa28d85852ec5288109c306aca9db9e2e4832338e +69 -0
- package/vendor/impeccable/bundle/blobs/5515d5210fbe2ef64e611ef2827a7204b7cea2f9df059f3ea499931f45065d93 +104 -0
- package/vendor/impeccable/bundle/blobs/55e95137b3f9198c1d4dfc425366b82f1ef5f77d602682b2edf91f2ce9296289 +24 -0
- package/vendor/impeccable/bundle/blobs/56500b1f9d2fcec8324d7f448d813048b5831a46d3feeb1055bd3eb17ec3660f +70 -0
- package/vendor/impeccable/bundle/blobs/571526fd5c60a586ff65bdb3f8333f26c36ae227f5f5ece826f4a43b4d4aee0f +325 -0
- package/vendor/impeccable/bundle/blobs/5738bcf9ac21dbb2113fd0c5cc7e4bbfc8174778916ab5843644332b3dbbc36e +46 -0
- package/vendor/impeccable/bundle/blobs/57402ef6fd9d0745f8c60d778f77da83a8b16edf751fa1013598a0f6e5f0f541 +136 -0
- package/vendor/impeccable/bundle/blobs/57e28934208e3eac653ab59c5c6a5e4eace44906d8ac86472988242d777ca5a1 +54 -0
- package/vendor/impeccable/bundle/blobs/581409ace104a81744b7d08f5398a2c207cf76d9e50751f807b4382eaf66454f +46 -0
- package/vendor/impeccable/bundle/blobs/598bfed550954471ba4d257d46b4d608cd82e4cdbf36d07bf93c5f4a563f7727 +89 -0
- package/vendor/impeccable/bundle/blobs/599afc25c1d6d083e4d4e60e1617ab05f6c5ecd52be75473f3788063219aa174 +31 -0
- package/vendor/impeccable/bundle/blobs/5b30a06646ad5e453d6b5ed1b8d446f69fca3cd13b8aeda28f0d0b2cbe8f62d1 +111 -0
- package/vendor/impeccable/bundle/blobs/5b5dcf7029376ee6fbcf13e5975eb828dd1dbf41736c1bd5017dcda8173b1ebc +325 -0
- package/vendor/impeccable/bundle/blobs/5be952da521a2d5fb799c834d14ce5388284374bc23c5efcec737a05aa65d878 +84 -0
- package/vendor/impeccable/bundle/blobs/5c036648951d555e73be63161e5c9edcba146d8e9f64b1604ffdea765cde5d9d +131 -0
- package/vendor/impeccable/bundle/blobs/5c4cd151c97dae824a039211d7ccfba4c572b76d8f079c6186ba1dd5dae7732b +54 -0
- package/vendor/impeccable/bundle/blobs/5ce02fc8f353d7f659535fb80e453963dc047a07c4396adf098fe010b479e7c0 +84 -0
- package/vendor/impeccable/bundle/blobs/5ce0631eacaae6d9fbb23ade26a774a20142cb40d3a8d5608a3fb9dbc4116b60 +806 -0
- package/vendor/impeccable/bundle/blobs/5db17cd013c10dca0012bc18aee7276280941579aa50757682e9ce60c4f7a006 +104 -0
- package/vendor/impeccable/bundle/blobs/5e3616ac45568f239fda3a4764f7d3bf3473b8b5eefd91e402dd9208a4b851d1 +24 -0
- package/vendor/impeccable/bundle/blobs/5f24c5a97b4ffcabc7c432b064cfdd04c7a2ad52f52e765be648dc0aadab8f38 +38 -0
- package/vendor/impeccable/bundle/blobs/5fae7f8a2fc3ddd49ad0a413446dc44daedef5b6b7de5eb935bd2fbfad646d58 +92 -0
- package/vendor/impeccable/bundle/blobs/61c72fdde649bf7f2e0668e48f9d222666c81672100b5f2265940e7aa13c8767 +111 -0
- package/vendor/impeccable/bundle/blobs/633903ba7cb38ed502448a66691fbf655805786a2f06be67043f12294ad08e86 +37 -0
- package/vendor/impeccable/bundle/blobs/64802d14087fc96b38ef3881fef8098b36068d07f3b942031637b18eef3dd2af +84 -0
- package/vendor/impeccable/bundle/blobs/64807d8f43267f4ed879e997834bbf793bd4605ba1dc65f4b545324b660a7063 +80 -0
- package/vendor/impeccable/bundle/blobs/68bc52a604731ca024610051fc763f4d78a53eb2a45d35b40a8c0383043baa63 +86 -0
- package/vendor/impeccable/bundle/blobs/68c5636a7858dd0b5137a9229c15e25fdc2ee40a0f8a4e9d809f78e809256262 +327 -0
- package/vendor/impeccable/bundle/blobs/696c15f96d49a03091b71a408151a3297521f7a8231b98ca9b1103667a0b5f89 +80 -0
- package/vendor/impeccable/bundle/blobs/6989120346e87907d59cc6d4708dd9dee29227ad583fbefee28935395b68ce34 +24 -0
- package/vendor/impeccable/bundle/blobs/69be9bb887f4d8ba4ead24928f9b97d122c796e731652fc0c08f195ab8ec2815 +105 -0
- package/vendor/impeccable/bundle/blobs/6abbf5979db5cb1d7965bf5f91d589e984843069c587f4d1e63aab135bbace0f +37 -0
- package/vendor/impeccable/bundle/blobs/6acc0bf221a4ddc6e5c6438348920b2ca2393b29c4314dbde2cdc23f2b1a9639 +58 -0
- package/vendor/impeccable/bundle/blobs/6bc62a59f6fef0b749927c8d10e9849ab2411199d86d70772a86f8e83ac309f5 +29 -0
- package/vendor/impeccable/bundle/blobs/6bdbc3f745ceee15e10b050f109ce42bbeb53ab3c3b5239257de1d596654dee7 +94 -0
- package/vendor/impeccable/bundle/blobs/6c382f8283756e8a693d832b750f7e4cbff1ca5bdcc3825b2b4ef4da9f21876a +94 -0
- package/vendor/impeccable/bundle/blobs/6c9ce3e27ec4520ead001da3aad2a2ebba481c4e5cd22873db8890259ee579fe +95 -0
- package/vendor/impeccable/bundle/blobs/6d368b679a0ed1815812815de65863b5840d419589dfbda06224c01149240287 +258 -0
- package/vendor/impeccable/bundle/blobs/6d47503587ad6da17ac529f44a96123bbb96a9c91a7a9350b7690fc467561a5d +46 -0
- package/vendor/impeccable/bundle/blobs/6e20041e209e8705d14aa9c4fb8cca3f0d743791de633785e5b46e2dd1ff1a6b +24 -0
- package/vendor/impeccable/bundle/blobs/6e7e3b7c4cf331cdb43f4546c164acd6c45a267ce3289dcfa87e13202d98c747 +104 -0
- package/vendor/impeccable/bundle/blobs/6f1d52863482fa0f6fff877f0cc8f6dd0b4230d28050b0d267e082776e61a332 +37 -0
- package/vendor/impeccable/bundle/blobs/706c68612a7c6b899a0abf0b407eca7cabcd371deae60f830aa38aa86947694e +84 -0
- package/vendor/impeccable/bundle/blobs/713cac92a71ef45e8b700180d881f830096cfe2b0615e79b276ccc4a12c051e0 +80 -0
- package/vendor/impeccable/bundle/blobs/733504a70ed20bcfca9c26c353f7b88f8491d24f3f2fe124dc1e73b28eefa296 +145 -0
- package/vendor/impeccable/bundle/blobs/73549b5536699c915156339976192fb38534bb43158cf9262ff5b89090388c64 +806 -0
- package/vendor/impeccable/bundle/blobs/73bd60faec1d8360753595f1ee9e970b44933448202767d7b0e87c275d399396 +6 -0
- package/vendor/impeccable/bundle/blobs/745b1f74877f6b3445da48af65dc45c66c3daa7738cb9a928aaa900889c2a204 +104 -0
- package/vendor/impeccable/bundle/blobs/74e20b26c29242bbebf79760315f7f0788e001566695618cfc70805484c6f92a +111 -0
- package/vendor/impeccable/bundle/blobs/759bab1d8adc071fdde2efcf6e2157aa4026f3c2b4f3c342a8070bf328011616 +214 -0
- package/vendor/impeccable/bundle/blobs/7848f40e224cf520bd8554943c9816a1ff8c97b1db57af0844e3b1ebb223d91f +416 -0
- package/vendor/impeccable/bundle/blobs/78ac93689928a580c2f90242cbaa96dda3fa4e55ff1f1d00e412b2a62ad85232 +145 -0
- package/vendor/impeccable/bundle/blobs/78c236dadb7e70337dc9dfa67e65fc15b7abed137ad320c16410ddfa7aec34f9 +131 -0
- package/vendor/impeccable/bundle/blobs/79114c6bf78b5a1838fe19bf033f3be85b232560eebf190ff8586aaec34ea170 +105 -0
- package/vendor/impeccable/bundle/blobs/79f85e381d1d6fdc8d39f54e1c8753fccf19b4ba3abb9827b6a7cc61eb376d1f +416 -0
- package/vendor/impeccable/bundle/blobs/7ad26830c7399a118cdbd4465a5426bc1919015aba99fd15959dc6deb8edc8d6 +80 -0
- package/vendor/impeccable/bundle/blobs/7af0a8665057c83b39bca2c8c7427ef2343734f70d4128c377113a6726a1e3b1 +12990 -0
- package/vendor/impeccable/bundle/blobs/7fd1617d5a86b7a1a0bf9d6e291b334ac41a3efce31031eeaef11de7cd7e75b4 +325 -0
- package/vendor/impeccable/bundle/blobs/800cf1c0392b24de7c0a1c6ea6778ecb433dec71c49a150bce96a98477527b2f +1 -0
- package/vendor/impeccable/bundle/blobs/808291e15746c9a64d9ede3ad3f06664b0a72970aa95052e064a96f1bfbed361 +54 -0
- package/vendor/impeccable/bundle/blobs/81666fc7f783b4e3514db6554e713dc0479bd9cdedb06e93d15f8b579aae869a +105 -0
- package/vendor/impeccable/bundle/blobs/824b994782a1fe68a244bbdff7218a2e0854655d90cc0fb5ade7ef9259ba6305 +46 -0
- package/vendor/impeccable/bundle/blobs/82a5e564563333aabb7ab4d2f8c26c785dfe2c2416ac6e9f30cba31440676194 +46 -0
- package/vendor/impeccable/bundle/blobs/835f19a0a3812f3652dd6979a2ce5597f654fd01f26e1b420b92d5f42b997ce4 +121 -0
- package/vendor/impeccable/bundle/blobs/84a06415956986cb215139b3efda7b3c7a5bb6f502a3b3d9300f0744a970e620 +99 -0
- package/vendor/impeccable/bundle/blobs/84df879a0332a56ece4bff1922ecf4f50635951b3c67e67eb46f31bc5d30fa9a +111 -0
- package/vendor/impeccable/bundle/blobs/85b9c2d051de94ee9129c58be111946f73035ca62bbd2a3936f4fa48768fe5cf +145 -0
- package/vendor/impeccable/bundle/blobs/869fa5390b84bfd00d072f5280a9002ea3e3936edf5985241be641a87f03ff7b +41 -0
- package/vendor/impeccable/bundle/blobs/86d10faab62da852aa1f4304157871545c853da708b6fe61c80aefb552c1f300 +84 -0
- package/vendor/impeccable/bundle/blobs/87b3db688c7963898bda8096f7868fed05ec5a0a80d14298e8b906b70cdf9c42 +416 -0
- package/vendor/impeccable/bundle/blobs/88749ebbe9bc87250765a07c2b959508262bd0e276ad60baa53e6e48c3579143 +806 -0
- package/vendor/impeccable/bundle/blobs/896da399bafcffb0623bdd81bb18709d6eab25c9d5917e739c8798f31ff0d076 +46 -0
- package/vendor/impeccable/bundle/blobs/89eb0206a0d9308c6c6a7cc01bc4fd8812d2bd34bb9a831988c5d86fac2c60de +42 -0
- package/vendor/impeccable/bundle/blobs/8a1c872773996dfa1c1eb765ac7ed8e8d41f99d4f12f090b4725b694e85eaa62 +336 -0
- package/vendor/impeccable/bundle/blobs/8a2d316593a631579bbb2f3fcb90d4488f85e97f69698dd2dd4fb50766f537d3 +325 -0
- package/vendor/impeccable/bundle/blobs/8b23562ccc3e41609ce6e67fdad6cc57b6c961964c329eff6975a1b4c5471c0d +111 -0
- package/vendor/impeccable/bundle/blobs/8c06daf096984cf71cf4133ea284dd6eaf503208da828816836ea41dfb69a234 +80 -0
- package/vendor/impeccable/bundle/blobs/8c34f78d71ac02c99303c7e0ca9ef30341aa9ecdeb75804dcba7e36a127914c1 +84 -0
- package/vendor/impeccable/bundle/blobs/8e7bb79db7331b93f99de314dd5599de8587ec0b6c25e26cf1efab25c0777fcb +86 -0
- package/vendor/impeccable/bundle/blobs/8eb39a13e3d3650d4261f8fb06e91d6c0b888ca12ddbd3a5610cd8f0b05ad176 +69 -0
- package/vendor/impeccable/bundle/blobs/8eb466778023fccea641654d662157b123eeb360f4a0875bf6fbe3d93680851c +24 -0
- package/vendor/impeccable/bundle/blobs/8f0867db7c6f6a54348a0d951f198a1bd852cd12505d821e6e1ac6bd42e7fcea +87 -0
- package/vendor/impeccable/bundle/blobs/8f651cb1f8cde0acc5cc511b77fddd98558a527f54974698a1650b0fd7e849a7 +43 -0
- package/vendor/impeccable/bundle/blobs/8ff60b8b5369d364f732f8de10479a39294e65341b3e0b6497b21de5c8e34b2d +806 -0
- package/vendor/impeccable/bundle/blobs/904859c8160b02330b04db23a8eeeb4ef55bcaa10f5208b8d73a1718334633e7 +84 -0
- package/vendor/impeccable/bundle/blobs/910461b1c1f8216155165955c860a884a1e2f557cb38f21ef512ea90ef6503c2 +136 -0
- package/vendor/impeccable/bundle/blobs/9205e222bc6565b37fb504ceec93233c2d2a456802b69d16e6b1c44723907c4c +5 -0
- package/vendor/impeccable/bundle/blobs/93eda27117930692a20f668f1cb0a80b7e14ab865998faba567cd721116081d4 +84 -0
- package/vendor/impeccable/bundle/blobs/943b0d7c9ce4f6802d8440a07b2ad3c61cbd1cc00ab63962bab7eea9ca584d20 +46 -0
- package/vendor/impeccable/bundle/blobs/948326fab89f0d5c07355a06b9b9c30d08bba2e3a673a0151ebbf5a39dff7b9a +40 -0
- package/vendor/impeccable/bundle/blobs/94b4ce6299fea93d9f256b2d25705961a76bc5ea940c56db4145686ebc99df1b +89 -0
- package/vendor/impeccable/bundle/blobs/95b07450ad1ea0b7adc369587b06e52404945bbaa5d87f7491fac7ffd0e6e2ae +11 -0
- package/vendor/impeccable/bundle/blobs/960cb922bc934adbf9192e9428ff6bec1f382038166f02a785939c93b7391067 +139 -0
- package/vendor/impeccable/bundle/blobs/96e2e6bd4fcf9a2c6da65fb029f96d9176308fae2efd9d8653d3b8d838960e07 +44 -0
- package/vendor/impeccable/bundle/blobs/96e508039c719c0815701c36b8418b18baee1967f915fa29b23b84861ae8ea94 +127 -0
- package/vendor/impeccable/bundle/blobs/98afc4c6da252e90c6b783079b6f157bf94a13dd4351392e881edd2a100edf6a +105 -0
- package/vendor/impeccable/bundle/blobs/9a2c08ee2516d2ee87129e7ebe6a0895f9990c9852d1f6fa7e70be9a6a88a659 +234 -0
- package/vendor/impeccable/bundle/blobs/9b2fc50c5062073d097140cde85602bba181e325ec6b9eea1bd3da74582acb9d +46 -0
- package/vendor/impeccable/bundle/blobs/9b85b85443aec09918befb83208c72f475457db8261a8fc5e83ef7eec474c869 +145 -0
- package/vendor/impeccable/bundle/blobs/9deb14303b421b5a9232755b5b9f317716f33e1e211557a98a00a9c409775c4d +145 -0
- package/vendor/impeccable/bundle/blobs/9e161532dc6731581d7a5f35bda5a2865e5248df7aff90e6dfc9221409893e35 +54 -0
- package/vendor/impeccable/bundle/blobs/9eb03b319ce7a2b281bc85ed1b0a437eb05ab2f765fc267354f9f9e6cbfadc25 +806 -0
- package/vendor/impeccable/bundle/blobs/9f1151faffbaadba0ddf5c09a4b2a82c9a12c900a2c1a9dac9863ba9ba0f420e +54 -0
- package/vendor/impeccable/bundle/blobs/a1a56df5fd51be403ca85a2f8054bb6f2bfeee443556c7798c2482e412fb6a09 +54 -0
- package/vendor/impeccable/bundle/blobs/a1dbde501ffabb50f30f28f2de6755b5e91b3d4028292c5a3abd3358106eb457 +37 -0
- package/vendor/impeccable/bundle/blobs/a1e4febca3455787d7c753fe177a150dccde6e742957de400b0307247802d200 +145 -0
- package/vendor/impeccable/bundle/blobs/a423108e7e31a54564e2e0794186394f842625fd9f7d7ce6e6615362511503a2 +93 -0
- package/vendor/impeccable/bundle/blobs/a4cfd2330c8cca94b62986679b3f9e3bb9ada0cb30c2c63c5d19c6039f5a45ae +104 -0
- package/vendor/impeccable/bundle/blobs/a5371492582dbeb69b24a1a2947b256a2da8a4d55917af709bbab6e452d9d23c +145 -0
- package/vendor/impeccable/bundle/blobs/a55f016c046cb6a27c55bd7f346375aeb506a755c4fbca19a5f92dbd42309c23 +59 -0
- package/vendor/impeccable/bundle/blobs/a7045711a1f0dd2cd5bd98e57ff615f638d7e29738bdd618cf15e83fea5993b9 +325 -0
- package/vendor/impeccable/bundle/blobs/a7f036f4217933db8a96cf2f0ba251b15f388839d62bcf95720ce0b7152dd185 +806 -0
- package/vendor/impeccable/bundle/blobs/a8547c8565979894f0c07f92a96ac2a38e681a31fbf155ffeefc7566e185d9c2 +39 -0
- package/vendor/impeccable/bundle/blobs/a8f4056a85706c0c8f80ec48e9b437e198464100aa42786f9252051f4b931c19 +111 -0
- package/vendor/impeccable/bundle/blobs/a9515f6f084d8f51c378eb3cdc6db1f12e06dba2d32fc61b7ee7950fa2586f2e +24 -0
- package/vendor/impeccable/bundle/blobs/a9856cb40da6519b1334bcfc75a4fbe83bef39ca86ee6f3effcb2a96794c627c +127 -0
- package/vendor/impeccable/bundle/blobs/a98b397cedeeaa1da57f3395b3d9b6c1fc477f4247fb9dc13e4da3da588283ff +54 -0
- package/vendor/impeccable/bundle/blobs/a9d2203acd45ca33a13d5c68b02b23ed512425ac15f0e8438318ed124b43729d +61 -0
- package/vendor/impeccable/bundle/blobs/ac695dd89d5f1261004cfa966526f5d5e913c92fa0640d4d71cb42493effad08 +131 -0
- package/vendor/impeccable/bundle/blobs/ad389ab12800738b0e5c97618278b7a824654b25990166ec9f389caa5c3386ca +37 -0
- package/vendor/impeccable/bundle/blobs/add1bee76f897f989166a5b9ad1b38d9173248e29d668d5c885ae9a0eff73861 +105 -0
- package/vendor/impeccable/bundle/blobs/af34b8af89edb10e228c0482754423f48238fce816eceb8703b8781c130da54e +24 -0
- package/vendor/impeccable/bundle/blobs/b0e1a0721a1e47675a8750cfb608138743dd9fa9c047146e5cc8f82b9041be7a +806 -0
- package/vendor/impeccable/bundle/blobs/b14dc725606717be881a058bb691c0af1860cc8ad98d48e5a4789fe1a7de5458 +806 -0
- package/vendor/impeccable/bundle/blobs/b161198874e4e77599bc31691e78790be14bacc2eb03be168c8a7543ece9fbe1 +145 -0
- package/vendor/impeccable/bundle/blobs/b29e10f4506af2277739ad2373bc91c9fff41dbe76c9907f45152b4178cc6b6c +105 -0
- package/vendor/impeccable/bundle/blobs/b2d71ff0df7ed49e06dfc4acfce3d3f7eb48afa68be04763ee8c08354df50a07 +97 -0
- package/vendor/impeccable/bundle/blobs/b2f60e0154bf0e687badc46d8c8420e2118a9a6e21162050722be779dc02cb6d +111 -0
- package/vendor/impeccable/bundle/blobs/b314a0c5bd844f6471ea3031aeb9299674d972fbdd1615d99d16478de437d26d +84 -0
- package/vendor/impeccable/bundle/blobs/b31ff29c7a1ea979c6d039f7e8d17007410697ab49536690dca109f0af3f20f8 +336 -0
- package/vendor/impeccable/bundle/blobs/b3782f2d9215eb0f5df4fe3c0e0bec07cef011e1836d4d0e45ef02bc48d3adde +24 -0
- package/vendor/impeccable/bundle/blobs/b4def5b57733b6ba233570bd5691a536901f8b15479fc0111a2cde56224d0e1a +325 -0
- package/vendor/impeccable/bundle/blobs/b5f4fbb4a044c3f5ec14adc847222488f00fccabbf79ecd0b21084c8d319d616 +105 -0
- package/vendor/impeccable/bundle/blobs/b6022a8c7200e96b0b55c2ff599a01d64123a2f5fe01557d4ca5192a6e0f0b0c +145 -0
- package/vendor/impeccable/bundle/blobs/b6a2ef031313d3848ab2928875298550836f0f9ff7bdf5772e918c5c610ea448 +806 -0
- package/vendor/impeccable/bundle/blobs/b6dfd3df9a371e7d179d365cc1d72c11d4ed91b6507c0e1dbec0843419542f66 +84 -0
- package/vendor/impeccable/bundle/blobs/b7fcd2b03539d1029c8774fa806e6f4c677448e9e97e15f69b066022536c5491 +80 -0
- package/vendor/impeccable/bundle/blobs/b824bb76a657d3edd65e89807dcb21a3679eab39292423066e11368b35afba79 +325 -0
- package/vendor/impeccable/bundle/blobs/b8d49a3cab3428d9f351502e9c2c5802cef187e0d2af626ef3e1cd1837fd06bf +105 -0
- package/vendor/impeccable/bundle/blobs/bad9250670c18d89722563fd747bae4c4bec64d1db0ee09d12d4fea04fe271b8 +84 -0
- package/vendor/impeccable/bundle/blobs/bb069b43c09109d7031b0374e31955749fec657b252d39782f11e8985aca2b51 +131 -0
- package/vendor/impeccable/bundle/blobs/bb36665889124a0b6e15f16045265737449c3bdcf2712cdb08af3cfa01563e2b +14 -0
- package/vendor/impeccable/bundle/blobs/bb59a1f78f3d2aa78e4b024fe203117155f50946a9e4bbe65c1b3b3abdcee356 +104 -0
- package/vendor/impeccable/bundle/blobs/bb9d4bb369216e892eea25adeaefc5a3e09bb4abd31e3475b79e47b3aee2a6af +806 -0
- package/vendor/impeccable/bundle/blobs/bc5f71f1129d0f2c310d913d07c8dc609a1d25644121bd78c308f42d52a0b9e9 +86 -0
- package/vendor/impeccable/bundle/blobs/bc7a5128cfed46148396c08798b6b9429406fbe477e84e331a36ee2840b6b776 +111 -0
- package/vendor/impeccable/bundle/blobs/bcc05ea92faebb5c74037a9d4263a5ce9a56f5ab07c8ab3c59ee704d8cade745 +24 -0
- package/vendor/impeccable/bundle/blobs/bdf9a59beea111ac6f98f5624854feb5a5a1d60b1989edbbfabf3dc6f357a7e6 +105 -0
- package/vendor/impeccable/bundle/blobs/bdfd2a879ca65e437481eac5309f2283da225121630935d89ed902cfdf470c8e +105 -0
- package/vendor/impeccable/bundle/blobs/bea6ebfda78c51b9cf372097a1d77431d0f6bcd96eadec13a2ac95afbb87fb6d +104 -0
- package/vendor/impeccable/bundle/blobs/bead87679caad7c537dd7c04c3bb78be56ac7eec279ad6aad7322f48ff2df2d9 +312 -0
- package/vendor/impeccable/bundle/blobs/bf3b8883f8550744e08754af82a78939ab8b1237e5fad6f38d819e2f17e8a389 +104 -0
- package/vendor/impeccable/bundle/blobs/bf92a4a51b29de9661c5fa82f3d79244718a67d385ef661990f0c4a5b367e843 +104 -0
- package/vendor/impeccable/bundle/blobs/bfc51972fbf387566dc9e29c8b1af479a66ab401fdbce659fae9e6a5a9d85316 +69 -0
- package/vendor/impeccable/bundle/blobs/c02feba25a961a72647ad317aba2d65baeeed53c4cdcc072f25bb37f4d867d43 +84 -0
- package/vendor/impeccable/bundle/blobs/c1cb6877ca99a0c1b38ba0c7d59f32702d3022f6821d8045f7133f7c40b6362f +242 -0
- package/vendor/impeccable/bundle/blobs/c1f3766091019b6f9183bc1d11b1e0fe03d44c168dc05a682c55df32f904dcfd +33 -0
- package/vendor/impeccable/bundle/blobs/c327bf17f2af186f87164dee5fb5468746a9b137f0b604365d531ac9387f3712 +325 -0
- package/vendor/impeccable/bundle/blobs/c36f6aac0ddf52eabbb21df09fd3310540dca6b09e7a4017d18e94c06c469405 +46 -0
- package/vendor/impeccable/bundle/blobs/c3ad2a5fa570876af6645c48d246c664859e19f253d2dc9e0ead34e785d5b40a +84 -0
- package/vendor/impeccable/bundle/blobs/c6a0ec6c28ae55fe539f0f41a507b1638495afd285d6eb15c00245fc8cc7e7fe +42 -0
- package/vendor/impeccable/bundle/blobs/c6f15d20d8d8748c4c475ff70cdb0ee426f2e6c9e7eab6169311f4dffd279ea1 +54 -0
- package/vendor/impeccable/bundle/blobs/c83d6a13fdfb58835c845f61aed3fc6dca17b5569d33387ced840bc13424f354 +84 -0
- package/vendor/impeccable/bundle/blobs/c9284892cb1f21aaeaf93fdf2e9e7a679d05e0baa8ddf309a79a9790d262ad38 +806 -0
- package/vendor/impeccable/bundle/blobs/cb8caddbb3919e5bf7f252143b519fb16db28a244642d937b186cb89962d9201 +828 -0
- package/vendor/impeccable/bundle/blobs/cbd8bd68fa00935dd0f179adb169252629cf7ee443ea9dc7db77e7ef2cf77446 +4 -0
- package/vendor/impeccable/bundle/blobs/cf3ae16765e7b5bc333ef76e24ab37f080e3d62e931c4986158e3cbcda6b9f7a +46 -0
- package/vendor/impeccable/bundle/blobs/d07e3131cdf3e392e59eaa3e2f59fcb0799d9494df4adfee12a21067fb8365ce +37 -0
- package/vendor/impeccable/bundle/blobs/d1366aa4802b364893c2a14b16fe95c3b7fab79f9f69eb272fd1538f7cb1ce2c +105 -0
- package/vendor/impeccable/bundle/blobs/d15a2914d93e07a4956acd5c8b8211af17380f527acd10d8acf4f4920badaaaf +89 -0
- package/vendor/impeccable/bundle/blobs/d1faa55eb956033d28e9f27fd2bc2a9f62c5da0f0abd6534819cc0a04db54d9d +37 -0
- package/vendor/impeccable/bundle/blobs/d1fbd55074abb2251bdaa03749d34acc42c38e46e47549f18f5848df57d43c42 +86 -0
- package/vendor/impeccable/bundle/blobs/d2455359baf5f9e75360c7094e28a16937c8674619e07d58f30d2b5abfd31e53 +105 -0
- package/vendor/impeccable/bundle/blobs/d658c48ffbe0031e8e3b318996cad6ceafe29e40aa50d5bb25e4bf1d6839dc7c +89 -0
- package/vendor/impeccable/bundle/blobs/d6a1fa1689642a6db9027493747d7ed54f9e0cae660472022c0a0a8dfdead3f4 +54 -0
- package/vendor/impeccable/bundle/blobs/d7211a816aa8ca1111701930f7cdab82b4c8caa94c9a37522c1d7945209b01c2 +84 -0
- package/vendor/impeccable/bundle/blobs/d87879329982d608866e4babd31c61438ec34c68483e529761fbf420203eeebd +104 -0
- package/vendor/impeccable/bundle/blobs/daa2a8ecd874f9f940dfd72aaa329318b06bb9be25515be85fea84c871b637a6 +145 -0
- package/vendor/impeccable/bundle/blobs/dcf7340da023e64144af5768b8bf44ecf45b1bfdec12d3b1c9e6618f17f8c60a +131 -0
- package/vendor/impeccable/bundle/blobs/dde1b74aeab3d90320e134f0ed0422bef99917dcab4c1749aa1720a2c94f725f +37 -0
- package/vendor/impeccable/bundle/blobs/de1b7404f4cdfd7b515196afb17b74b1980f0bc88cb8681ae93a76ca48ec7bdb +167 -0
- package/vendor/impeccable/bundle/blobs/df0eb9e9a484fc7b8a0f3e50573a7d7f81e0f17598ac30d9f3fe5a6c6aa5fefa +37 -0
- package/vendor/impeccable/bundle/blobs/df23e9ee5b689a05ed88f42e9a36aaffa2e6e28b1d56e2832acaa1d3603fd363 +105 -0
- package/vendor/impeccable/bundle/blobs/df4f14df1daaad1606b682995f649da19a85debf264092447b3b7ddb8b4bc1ce +147 -0
- package/vendor/impeccable/bundle/blobs/dfd6f341b156bc604e7556b27cba437d5870fbc82d4c673d0127cf18151b2226 +99 -0
- package/vendor/impeccable/bundle/blobs/e02ba7f4417e84b3bd5ec65287c4a14cf163ca3ac6f8ee37d8f709d0c8b0b6d2 +84 -0
- package/vendor/impeccable/bundle/blobs/e21af575fcc0f1df54ae422bea4dfa1e5211422606908919f6a86e19e0d5c20c +89 -0
- package/vendor/impeccable/bundle/blobs/e26ddd48211aae08fe6debf2a7a4308aa081ed224668cde528e451888db0e3e3 +325 -0
- package/vendor/impeccable/bundle/blobs/e2e275495354eeccb7e59af7d74e2ff1f371839bd6aaec1266428760995fb24c +104 -0
- package/vendor/impeccable/bundle/blobs/e2f98c4136d0ab70ec32fcdef58edb20ed8ec4f6cc067e0dae952b22cfd6a471 +24 -0
- package/vendor/impeccable/bundle/blobs/e3c331cc21d9a216e25e08628610ea99c97e150893c3d26e5c0cecc532f26d7b +24 -0
- package/vendor/impeccable/bundle/blobs/e44ca51f24c4736f9aee6024182b0409aa12ec94812b7ec94745e0999ed06a70 +29 -0
- package/vendor/impeccable/bundle/blobs/e49d2b0110c55751da3c965b4ae4d294aa676c961a09f8efbbbf22c1ec7c4fa0 +24 -0
- package/vendor/impeccable/bundle/blobs/e68467ba99684d8c975a8a2725145d29db41d70659c7544ea54cc6632660cea3 +127 -0
- package/vendor/impeccable/bundle/blobs/e71524578eb2bda3b8d2da3d8b8371239a2179c5fa866f9f7e48bcac45a8cd6f +84 -0
- package/vendor/impeccable/bundle/blobs/e71d6b97680084a7ccec01844e658cbd2042aec00da0c91bec62a240ad7dcf6a +145 -0
- package/vendor/impeccable/bundle/blobs/e7dd10af2c3c18c60dc20734d55ff870c323a10dadd337600f7bb980fc6b53c8 +327 -0
- package/vendor/impeccable/bundle/blobs/e802e4f7bdc89050a9c0f2ca506e1d493a2316e6e810c0336c57aa073717ef3e +50 -0
- package/vendor/impeccable/bundle/blobs/e8ee6c08e94b80324173d89d6f4cdc5b4829ea6858b3a11fc186588a490cada4 +46 -0
- package/vendor/impeccable/bundle/blobs/e9da72a13eb3411d6bbb316953022f62abc4434f505e5345907b216eda9f793b +39 -0
- package/vendor/impeccable/bundle/blobs/ea8432c90c30ecb0426662a681ead5c0941113079704e1a766cda09e85b15b4f +111 -0
- package/vendor/impeccable/bundle/blobs/eaa50e8cd95e00a94a257db2bff4eafd820696ba75a08a384a00517c3402924e +325 -0
- package/vendor/impeccable/bundle/blobs/eb3213b9c9f4d6b2f153e7b457f13aa131bcf633695229dad4eac39a920bdf38 +46 -0
- package/vendor/impeccable/bundle/blobs/ec58806f16fc7ba29bccef08f2e158cd00be077ce05d45e943a59bd26dc6dc55 +312 -0
- package/vendor/impeccable/bundle/blobs/ec6338b20047099601e4bac8b2efcd597f800d5e437259f6c15d23090400621b +325 -0
- package/vendor/impeccable/bundle/blobs/edddeb3fad88adec9a055b1bf9d5c75418cbe97a13b1a7f6765e73249e482563 +144 -0
- package/vendor/impeccable/bundle/blobs/ee0a15fcfc244b76b896a2650a17b35e444d4311166b69a3cfa32d11f8f44851 +30 -0
- package/vendor/impeccable/bundle/blobs/ee6d6d127c1c2ab3526d529a8e3698be2185b5e346ac617f37501de2c0698b97 +99 -0
- package/vendor/impeccable/bundle/blobs/ef0b8eca20e1321cf7216fd0bda41ce54b0cca197cfd1b075eb51f3436f59059 +24 -0
- package/vendor/impeccable/bundle/blobs/ef2dde00030580ed2765cbf7be9b2ea4a6f64cb915b804fd6f6abcf38051c7b9 +234 -0
- package/vendor/impeccable/bundle/blobs/f0c4d0615c7d520dfc2536c01cc7f1f3aab9b60ddc399ba01289fe62edb12370 +24 -0
- package/vendor/impeccable/bundle/blobs/f1601095679d7d8cf6fef6845598c70d8734190709c1404fa0026e28fef2faaa +325 -0
- package/vendor/impeccable/bundle/blobs/f173ff03f989f162cee815feb2d8ca72daf00019c48694d89db16d52171a79c0 +24 -0
- package/vendor/impeccable/bundle/blobs/f424dafa190533cd32c0bc3e4131d0c472d58e16bb191eab14f0ae73c2cea917 +37 -0
- package/vendor/impeccable/bundle/blobs/f597742c8e5562263d3bce725cb55e920d8c2c60223f41a632d523ca30cdd12b +111 -0
- package/vendor/impeccable/bundle/blobs/f672ef8251a3ed4051a053d30819664951b17540b2899acd27d20e500c234abc +258 -0
- package/vendor/impeccable/bundle/blobs/f7916d0113da7a19d4e03c113d5563d181457e44f1646ecab9191cfee5ae776d +89 -0
- package/vendor/impeccable/bundle/blobs/f7a9e3f30fe07b0d98351730e9895d50bba96dd42fe91c0d9b9a76ef62e53322 +80 -0
- package/vendor/impeccable/bundle/blobs/f7b854effc55c8f07e40a415e0d6b5c333f4042fbc849fac73d52619c8d053a1 +54 -0
- package/vendor/impeccable/bundle/blobs/f964506c0fae87b3c2c1db7016ddc9be9ef970bbcf5548d684b997b5d5991586 +33 -0
- package/vendor/impeccable/bundle/blobs/f97a6891c80bbbc728edefcf4b638d1a823b38f3cb16ecd0fbb717734cc5c0c8 +46 -0
- package/vendor/impeccable/bundle/blobs/f9cbbad0cc08fb9bd69d4d3046067c6cf820b89cdaf7af8c81c671fb0a62b6ae +54 -0
- package/vendor/impeccable/bundle/blobs/fce6688138d2ceb1e3d2cde5231f54b1d8dc8748b4c95a7919aa83b6f924cf96 +127 -0
- package/vendor/impeccable/bundle/blobs/fd5579dbae1fc2495b7dddde48df9673acebd27953bbb56d506d3b470375c9e9 +37 -0
- package/vendor/impeccable/bundle/blobs/fe91fcf28638f95577af481a50edaf339d6c9a3ad3b9fa477bc81c116b8bc392 +139 -0
- package/vendor/impeccable/bundle/blobs/ff0ab1361f52d70d3ff0d23090d78794a75afdfa2f8c1cee5491dee69215faaa +105 -0
- package/vendor/impeccable/bundle/blobs/ff882c59c9aced92338aa194cc99a521ea2f083fd22eef3b1c1225e06bc72f66 +86 -0
- package/vendor/impeccable/bundle/manifest.json +1139 -0
- package/skills/dev-plan/evals/evals.json +0 -72
|
@@ -0,0 +1,519 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: portal-dev-setup
|
|
3
|
+
description: '在你自己 App 的 repo 里,用 Docker 起一个真实的 XGENT.ai 门户(一盒 / one-box)做本地联调——不 clone 门户、不改门户代码、不重建门户镜像。一条 onebox.sh init 检查本地 puller 凭证(.xgent-registry.env 里的 REGISTRY + PULLER_AUTH,缺了就停下来让用户先去开发团队要)→ 自动 docker login 并拉门户镜像 → 从镜像里取出 compose 资产、挑空闲端口、生成 compose.env;再一条 onebox.sh up 按固定顺序 migrate → seed → register-app → 起栈并自动体检;跑不通先 onebox.sh doctor(把排查表能自动判的都判一遍并给出可粘的修法),要拉别的 App 陪调用 onebox.sh add <key>。凡任务涉及「首次把我的 App 接到门户上调试 / 起一盒 / 起本地门户 / 拉门户镜像 / 本地跑不通门户联调 / 一盒重置」,或出现 前端产物目录 /srv/www/apps 不可写、EACCES、duplicate input 导致反代全站 502、拉不到门户镜像、unauthorized、denied、/svc/<key> 404 或 502、localhost 打不开、port is already allocated、COMPOSE_PROJECT_NAME 撞栈把别的容器接管了、portal-api 一直 unhealthy、register-app 报 VALIDATION_FAILED、自省 401、有效 TDT 被判 INVALID_TOKEN、iframe 白屏、跨应用交换在发起方 401 这类症状时,务必先用本 skill 再敲 docker compose——即使用户只说「把门户跑起来」。Use when an external App team brings up, smoke-tests, resets, or debugs a real XGENT portal locally (the one-box Docker stack) from their own repo, without the portal monorepo.'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 门户一盒 · 在自己 repo 里起一个真实门户
|
|
7
|
+
|
|
8
|
+
**这个 skill 用在 App 自己的 repo 里**——门户代码不在你手上,也不需要在。它起的是一个跑在 Docker 里的
|
|
9
|
+
**真实门户**(精简镜像),你的后端/前端接上去,走的就是生产同一套协议:TDT 自省、四道闸、
|
|
10
|
+
iframe 托管、跨应用令牌交换。
|
|
11
|
+
|
|
12
|
+
需要的一切都在这里的 `scripts/` 与 `references/`,加上一件事:**门户镜像**。
|
|
13
|
+
|
|
14
|
+
以下命令在你的 App repo 根目录执行。先按实际加载位置设置 `SKILL_DIR`,表示本 `SKILL.md` 所在目录;`scripts/`、`references/` 和 `puller.env.example` 都相对于它,不假定安装目录名:
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
SKILL_DIR="<本 SKILL.md 所在目录>"
|
|
18
|
+
S="$SKILL_DIR/scripts/onebox.sh"
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
> **路径约定(先读这条,能省一次白找)**:本 skill 里出现的 `apps/…` `packages/…` `docs/…`
|
|
22
|
+
> `deploy/…` 这类路径**都在门户仓**。在 App 自己的 repo 里它们**不存在** —— 它们标注的是
|
|
23
|
+
> 「门户侧的实现在哪」或某段内容的出处,**不是让你去打开的文件**。找不到不是配置错误:
|
|
24
|
+
> 别去创建、别去全局搜、别把它当缺失依赖报出来。你需要的一切都在本 skill 的
|
|
25
|
+
> `scripts/` 与 `references/`(自包含)。
|
|
26
|
+
>
|
|
27
|
+
> ⚠️ 三个例外,它们**不是**门户仓路径:`portal-onebox/…`(`init` 在你 repo 里生成的目录)、
|
|
28
|
+
> `/apps/<key>/` 与 `/svc/<key>`(带前导斜杠 = 线上 **URL 路径**)、
|
|
29
|
+
> `/app/deploy/app-devkit/…`(门户**容器内**的路径,`docker compose run` 读得到)。
|
|
30
|
+
>
|
|
31
|
+
> 同理,**地址也不写死**:本 skill 里的门户地址一律是 `portal.example.com` 这类占位符或
|
|
32
|
+
> `<你的门户地址>`。真实地址只作为**值**写进你自己那份 `.xgent-registry.env`
|
|
33
|
+
> (`MANIFEST_STORE` / `TARGET_XGENT_PLATFORM`)。
|
|
34
|
+
|
|
35
|
+
## 一套就够:一台机器只起一盒
|
|
36
|
+
|
|
37
|
+
一盒是**全机共用**的联调底座,compose 项目名固定 `xgent-onebox`——它不属于某个 App,
|
|
38
|
+
你在本机调的所有 App 都接进这**同一套**。`docker compose ls` 已经能看到一套在跑时,
|
|
39
|
+
**别再 `init` 第二套**(init 检测到本机已有别的一盒会直接停下):
|
|
40
|
+
|
|
41
|
+
- 要拉平台侧的别的 App 进来陪调:`onebox.sh add <key>`(§2.1),它进的就是这套。
|
|
42
|
+
- 要调你自己的**另一个** App(在另一个 repo):`XGENT_ONEBOX_HOME=<已有 portal-onebox/ 的路径>`
|
|
43
|
+
复用那套栈跑 `register-app` / `dc`;宿主上的 dev 后端则直连一盒的 pg/redis/minio(§5)。
|
|
44
|
+
- 不用担心端口打架:init 挑宿主端口时逐个探测退让,一盒的 pg/redis/minio 落位永远避开
|
|
45
|
+
你本地 dev 栈的 5432/6379/9000-9001(见 §5 的直连表)。
|
|
46
|
+
|
|
47
|
+
## 0. 先备齐三样
|
|
48
|
+
|
|
49
|
+
| 你需要 | 从哪来 |
|
|
50
|
+
| --- | --- |
|
|
51
|
+
| **puller key** | 找**你们自己的开发团队**要。镜像仓库不开放匿名拉取,没有它一盒起不来——见下面「先配 puller key」。**镜像 tag 不用问**:一盒和它的反代都挂了 `latest`,`init` 不给 `--image` 就用它 |
|
|
52
|
+
| `listingKey` | 平台给的 App 标识(小写字母/数字/连字符)。它同时是 `/svc/<key>`、iframe 路径 `/apps/<key>/`、scope 命名空间、令牌的 `aud`——四位一体,永不改 |
|
|
53
|
+
| `app.manifest.json` | 你自己写、放你自己 repo 的门户契约。样例在 init 之后会出现在 `portal-onebox/app-devkit/manifests/`(一个 micro、一个 service) |
|
|
54
|
+
|
|
55
|
+
后端镜像可以晚一步:**先把门户本身跑通**是对的第一步,你的 `app-backend` 没配也不影响门户起来。
|
|
56
|
+
|
|
57
|
+
### 先配 puller key
|
|
58
|
+
|
|
59
|
+
`init` 会自己 `docker login` + `docker pull`,前提是本地有一份只读拉取凭证。**没有就会停在这一步**——
|
|
60
|
+
这时**不要去猜仓库地址、也不要从别处翻凭证**,让用户去找他们自己的开发团队要。
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
cp "$SKILL_DIR/puller.env.example" ./.xgent-registry.env
|
|
64
|
+
chmod 600 ./.xgent-registry.env
|
|
65
|
+
# REGISTRY=<仓库域名> 不带 https://、不带端口、无尾斜杠
|
|
66
|
+
# PULLER_AUTH=<base64> base64 的「用户名:口令」:printf '%s' '<用户名>:<口令>' | base64
|
|
67
|
+
# ONEBOX_PROJECT=<项目名> 省掉 --image 时用它拼 <REGISTRY>/<ONEBOX_PROJECT>/one-box:latest
|
|
68
|
+
# PROJECT=<项目名> 推【你自己 App 镜像】的项目(xgent-image-push 用,两个 skill 共用本文件)
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
`PULLER_AUTH` 和 `~/.docker/config.json` 里 `auths.<REGISTRY>.auth` 是同一个值,两边可以互抄。
|
|
72
|
+
查找顺序:`$XGENT_REGISTRY_CONFIG` → `./.xgent-registry.env` →
|
|
73
|
+
`${XDG_CONFIG_HOME:-~/.config}/xgent/registry.env` → `~/.xgent-registry.env` → skill 目录下的 `registry.env`。
|
|
74
|
+
**同名环境变量优先**,CI 里注入 `REGISTRY` / `PULLER_AUTH` 即可,不必落盘。
|
|
75
|
+
|
|
76
|
+
- 这是**团队共用的只读凭证**,不是谁的个人密码:有人离职要找开发团队轮换,而轮换会同时作废全团队的现有凭证。
|
|
77
|
+
- ⚠️ **base64 不是加密**,`base64 -d` 一条命令就还原成明文。别提交进 git(skill 目录自带 `.gitignore` 挡了这两个文件名),别转发出团队。
|
|
78
|
+
- ⚠️ **`ONEBOX_PROJECT` 与 `PROJECT` 是两个项目,别只填一个。** 一盒是门户团队发的调试镜像,你的 App 镜像在你自己的项目下;拿 `PROJECT` 去拼一盒引用会 `not found`,而报错看上去像 tag 写错(脚本在回退时会明确告警,别忽略那一行)。
|
|
79
|
+
- 拿到的是**离线 tar**(没有 registry 访问)就先 `docker load` 两个镜像——两个都在本地时 `init` 会跳过登录与拉取,不需要 puller key。
|
|
80
|
+
|
|
81
|
+
### 装 `@xgent/*` 私有包?不需要云账号
|
|
82
|
+
|
|
83
|
+
前端要 `@xgent/portal-sdk` / `@xgent/portal-ui` 时,**别去申请云账号、也别装云厂商 CLI**:
|
|
84
|
+
拿你已有的**发布令牌**向门户换一枚 ≤12 h 的只读令牌就行(门户持云凭据):
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
RELEASE_SKILL_DIR="<xgent-app-release 的 SKILL.md 所在目录>"
|
|
88
|
+
eval "$(node "$RELEASE_SKILL_DIR/scripts/npm-token.mjs")"
|
|
89
|
+
npm install
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
报 `NPM_REGISTRY_NOT_CONFIGURED` 是**平台侧**还没配,贴给管理员,你这边不用改任何配置。
|
|
93
|
+
细节见 `xgent-app-release` skill 的「第 0 步」。
|
|
94
|
+
|
|
95
|
+
## 1. 首次用:一条命令铺好
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
"$SKILL_DIR/scripts/onebox.sh" init --key <你的listingKey>
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
不给 `--image` 就取 `<REGISTRY>/<ONEBOX_PROJECT>/one-box:latest`(反代同仓同 tag)——**开新项目不用先去问 tag**。
|
|
102
|
+
`latest` 是**可变指针**:它跟着最新一版走,本地已经有同名镜像时 compose 不会回仓库看一眼,
|
|
103
|
+
所以开工前先 `onebox.sh pull` 一次。要钉住某一版(复现一个 bug、或团队统一版本)就显式
|
|
104
|
+
`--image <registry>/<项目>/one-box:v<版本>-<sha>`,那种 tag 是不可变的。
|
|
105
|
+
|
|
106
|
+
它做五件事,都在**你的 repo 根**落到 `portal-onebox/`:
|
|
107
|
+
|
|
108
|
+
0. **备齐镜像**:读上面那份配置 → `docker login` → 拉 runtime 与 proxy 两个镜像。
|
|
109
|
+
proxy 的镜像名默认从 runtime 推出来(同仓同版本、仓库名 `proxy`),有的部署不叫这个,
|
|
110
|
+
拉不到时用 `--proxy-image` 显式指定。**这一步在最前面,凭证不齐就停在这儿**,
|
|
111
|
+
不会让人跑到一半才发现,也不会留下半个空目录。
|
|
112
|
+
1. **从镜像里取出 compose 资产**(`docker create` + `docker cp /app/deploy`)——所以版本天然与镜像对齐,
|
|
113
|
+
不需要门户仓,也不会有「文档里的 compose 和镜像对不上」这种漂移。
|
|
114
|
+
2. **挑空闲端口**。一盒只发布 6 个宿主端口(80/443 · 5432 · 6379 · 9000/9001),
|
|
115
|
+
开发机上这些十有八九被占——它逐个探测并退让,把结果写进 `compose.env` 并回显。
|
|
116
|
+
挑出来的 pg/redis/minio 端口同时就是你宿主进程直连一盒基建的口(见 §5 的直连表)。
|
|
117
|
+
3. **生成 `compose.env`**:三段模板拼装 + 一段本机覆盖块(随机密钥、端口、项目名、镜像 tag)。
|
|
118
|
+
覆盖块**放在文件最末尾**,因为 docker compose 读 env-file 是**后定义者胜**——以后要改配置也往那下面加,别回上面改。
|
|
119
|
+
4. 把 `portal-onebox/` 加进 `.gitignore`(里面是密钥,且随时能重新生成)。
|
|
120
|
+
|
|
121
|
+
它**不会**覆盖已存在的 `compose.env`(那是这台机器唯一的一份密钥)。要整份重来加 `--force`。
|
|
122
|
+
|
|
123
|
+
跑完编辑 `portal-onebox/compose.env` 末尾,填你的 App:`APP_IMAGE`(后端镜像 tag),
|
|
124
|
+
micro 型再加 `APP_FRONTEND_DIST`(前端 dist 的**绝对路径**,目录里要有 `index.html`)。
|
|
125
|
+
|
|
126
|
+
> `service` 型(无前端、纯 API)**不要**填 `APP_FRONTEND_DIST`——它不露卡、不可打开,只作被调用方。
|
|
127
|
+
|
|
128
|
+
关于 `APP_IMAGE` 的两条,不知道会各卡一次:
|
|
129
|
+
|
|
130
|
+
- **容器内必须监听 8080。** 反代的通用规则是 `/svc/<key>/* → <key>-server:8080`,devkit 只注入 `PORT=8080`;
|
|
131
|
+
manifest 里的 `deployDescriptor.port` **一盒不读**(那是生产部署控制器的字段)。镜像不认 `PORT`、认自己那套变量名的,
|
|
132
|
+
把它写进 `compose.env` 末尾(例:`ZO_HTTP_PORT=8080`)。漏了的症状是 `/svc/<key>` 502。
|
|
133
|
+
- **生产镜像是 amd64,开发机多半是 arm64。** devkit 跟随本机架构、不会替你转译;amd64 镜像在 arm64 机上
|
|
134
|
+
起不来(`exec format error`)。在 `compose.env` 末尾加一行 **`APP_PLATFORM=linux/amd64`**(Apple Silicon 走
|
|
135
|
+
Rosetta,慢但能跑)。留空 = 跟随本机,行为不变。
|
|
136
|
+
> 这个钩子随一盒镜像走。老镜像的 `app-dev.yml` 里没有它(`"$S" env` 看不到 `APP_PLATFORM` 就是),
|
|
137
|
+
> 那就自己叠一层:`portal-onebox/app-platform.yml` 里写 `services: {app-backend: {platform: linux/amd64}}`,
|
|
138
|
+
> 再 `"$S" dc -f portal-onebox/app-platform.yml up -d app-backend`。
|
|
139
|
+
|
|
140
|
+
之后一切都走同一个脚本,它会按生效的 env 拼好那串 `--env-file` / 四层 `-f` / 一组 `--profile`:
|
|
141
|
+
|
|
142
|
+
| | |
|
|
143
|
+
| --- | --- |
|
|
144
|
+
| `onebox.sh up` | **按顺序把整套铺起来**(迁移→种子→各库→注册→起栈),幂等可重跑,跑完自动体检 |
|
|
145
|
+
| `onebox.sh doctor` | **体检**:排查表里能自动判的都判一遍,每条给一行可直接粘的修法。**跑不通先跑它** |
|
|
146
|
+
| `onebox.sh add <key>` | 把一个平台侧 App 拉进来陪调:按它的 manifest 拉镜像+注册+建库(+建桶 / `migrateArgs`)+**生成 compose**+起容器+冒烟,非破坏性;目录里的清单型 App(如 observability)`up` 会自动走这一步 |
|
|
147
|
+
| `onebox.sh status` | 生效 env + 容器状态 + 宿主侧健康探测 |
|
|
148
|
+
| `onebox.sh env` | 只看生效 env 与配置告警 |
|
|
149
|
+
| `onebox.sh smoke` | 只跑健康探测 |
|
|
150
|
+
| `onebox.sh dc <args>` | `docker compose <拼好的参数> <args>` |
|
|
151
|
+
| `onebox.sh chain` | 打印那串参数(想自己敲 compose 时抄它) |
|
|
152
|
+
| `onebox.sh pull` | 只(重)拉门户镜像。不带参数时从 `compose.env` 读当前版本 |
|
|
153
|
+
|
|
154
|
+
## 2. 起栈:顺序本身是契约
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
S="$SKILL_DIR/scripts/onebox.sh"
|
|
158
|
+
"$S" up # ← 就这一条。按顺序铺完,跑完自动体检
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
顺序是契约(种子会 truncate、反代启动时才读 /svc map),`up` 存在的意义就是**不让人自己记它**。
|
|
162
|
+
它幂等,改完 manifest 或 compose.env 重跑即可。下面这几步是它替你做的事——想手动控某一步时照着敲:
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
# 1) 基础设施
|
|
166
|
+
"$S" dc up -d postgres redis minio
|
|
167
|
+
|
|
168
|
+
# 2) 门户库 + 四个基础服务各自的库(它们的 xgent-* 库由 postgres 首次初始化时建好)
|
|
169
|
+
"$S" dc run --rm portal-api bun run db:migrate
|
|
170
|
+
for k in files llm-gateway git org; do "$S" dc run --rm portal-api bun run db:$k:migrate; done
|
|
171
|
+
|
|
172
|
+
# 3) 一盒种子 ★ 破坏性:truncate cascade,清掉租户/用户/清单/安装
|
|
173
|
+
"$S" dc run --rm portal-api bun run db:seed:onebox
|
|
174
|
+
|
|
175
|
+
# 3b) 你自己的库:新镜像在 postgres【首次初始化】时按 APP_KEY 建好 `xgent-<key>`;
|
|
176
|
+
# 老镜像不建,换过 APP_KEY 的也不会补建(初始化脚本只在数据卷为空时跑一次)。
|
|
177
|
+
# 连不上库的症状是你的容器起不来,而不是一条像样的报错 —— 先确认它在:
|
|
178
|
+
"$S" dc exec postgres psql -U postgres -lqt | grep -q 'xgent-<你的key>' \
|
|
179
|
+
|| "$S" dc exec postgres psql -U postgres -c 'CREATE DATABASE "xgent-<你的key>"'
|
|
180
|
+
# 迁移怎么跑以你的镜像为准(多数是启动自迁,或一条 --role migrate 之类的 argv)。
|
|
181
|
+
|
|
182
|
+
# 4) 注册你的 App:读 manifest → 建 listing + 服务账号 + 写 /svc 放行 map
|
|
183
|
+
"$S" dc run --rm -v "$PWD/<放 manifest 的目录>:/devkit:ro" \
|
|
184
|
+
portal-api bun run register-app /devkit/app.manifest.json
|
|
185
|
+
|
|
186
|
+
# 5) 起门户三件套 + 基础服务 + 你的 app-backend
|
|
187
|
+
"$S" dc up -d
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
顺序约束,颠倒了症状都很难反查:
|
|
191
|
+
|
|
192
|
+
- **各服务自己的库要在 `db:seed:onebox` 之前迁移完。** 一盒里 deploy-controller 启动即拒,
|
|
193
|
+
所以「逐租户基线」由种子代跑(`org` 的预置档案字段就是这么来的)。表还没建就只是一条
|
|
194
|
+
`⚠ org per-tenant baseline FAILED`,栈照样起得来 —— 症状要到你在组织架构里**建第一个员工**
|
|
195
|
+
时才出现:`UNKNOWN_FIELD 未知字段:name`(零字段定义时连预置的「姓名」都是未知 key)。
|
|
196
|
+
补救:`"$S" dc run --rm portal-api bun run db:org:migrate` 之后重跑一次 `db:seed:onebox`。
|
|
197
|
+
- **`db:seed:onebox` 必须在 `register-app` 之前。** 种子第一步是 `truncate … marketplace_listings … cascade`——
|
|
198
|
+
先注册后种子 = 你的 App 注册被静默清掉,市场里找不到它。
|
|
199
|
+
- **`register-app` 最好在 `reverse-proxy` 之前。** 它落的是一个 `/svc` 放行 map 文件,而反代**启动时**才读那个目录。
|
|
200
|
+
反代已经在跑就补一句 `"$S" dc exec reverse-proxy caddy reload`,否则 `/svc/<key>` 一直 404。
|
|
201
|
+
- **`register-app` 跑完先去市场里确认卡片在。** dev 模式下它会顺手把这条 listing 授予现有租户(生产是平台管理员显式勾选),
|
|
202
|
+
但**旧一点的一盒镜像里没有这段代码**——症状是控制台显示已上架、租户市场里连卡片都不出现,且**没有任何报错**。
|
|
203
|
+
看不到就先 `"$S" pull` 换新镜像重来,或按 troubleshooting §6 手工授予,别接着往下排查前端。
|
|
204
|
+
- **要做跨应用交换的,`register-app` 得跑两次。** 发起方 App Secret 绑在**已安装实例**上,所以是
|
|
205
|
+
`register-app` → 在应用市场里装上你的 App → **再跑一次 `register-app`**(幂等)。漏了的症状是交换在发起方 401。
|
|
206
|
+
|
|
207
|
+
一盒里带四个基础服务:`files`(文件管理)· `llm-gateway`(大模型网关)· `git`(Git 服务)·
|
|
208
|
+
`org`(组织架构:部门/岗位/任职/汇报线),外加一个**平台基础服务应用** `observability`(日志与监控)。
|
|
209
|
+
你的 App 要用前四个的数据,就在 manifest 里声明 `exchangeTargets` 走令牌交换;
|
|
210
|
+
组织架构另有一条**服务态**只读面(`org.read`,不走用户态交换、也不需要 consent):
|
|
211
|
+
`/svc/org/api/v1/query/superiors`(批量查直属上级,上限 200)与 `/svc/org/api/v1/query/capabilities`
|
|
212
|
+
(`{ superior: boolean }` —— 本租户有没有汇报数据)。⚠️ 一盒装上的是**空组织**,要数据先在
|
|
213
|
+
App 里走「员工 → 导入」(CSV),否则上级一律回 `null` / `reason: "no-employee"`。
|
|
214
|
+
|
|
215
|
+
日志与监控不用声明——种子把它登记成平台基础服务应用,你的 App 的服务账号
|
|
216
|
+
**默认就持有 `observability.ingest`**,拿服务态令牌直接写 `/svc/observability/v1/ingest/<stream>`(落 `app_<你的key>_<stream>`)。
|
|
217
|
+
|
|
218
|
+
### 2.0a 日志与监控是怎么进来的(`up` 替你做的 ④b / ⑥)
|
|
219
|
+
|
|
220
|
+
- **④b** `observability` 不是门户内置 workspace,是清单型 App(`app-devkit/manifests/observability.manifest.json`)。
|
|
221
|
+
`up` 对目录里每个清单型 App 自动走一遍 `add`:拉镜像(`<REGISTRY>/<ONEBOX_PROJECT>/observability:v0.5.4-…`;
|
|
222
|
+
多架构清单会自动挑本机架构,只有单 amd64 的版本才要在 compose.env 钉 `OBSERVABILITY_PLATFORM=linux/amd64`
|
|
223
|
+
走仿真)→ 注册 → 建库 `xgent-observability` + 在一盒 minio
|
|
224
|
+
建桶 `xgent-observability` → `init-db`(清单 `deployDescriptor.migrateArgs`)→ 生成 `generated/observability.yml` 起容器。
|
|
225
|
+
它要的那批 `ZO_*` 值(元数据库/对象存储)已经在 `onebox/compose.env.onebox.example` 里指向一盒的 postgres/minio;
|
|
226
|
+
`OBSERVABILITY_PORT=8080` 让它在 8080 上听(一盒反代只反代 `<key>-server:8080`)。
|
|
227
|
+
- **⑥** 门户自身的控制台日志:`up` 用 `portal-self` 签一把只带 `observability.ingest` 的 `xsak_` 写进 compose.env
|
|
228
|
+
的 `OBS_ACCESS_KEY`,再起 `portal-logs`(fluent-bit);portal-api 的 stdout/stderr 走 docker 的 fluentd 日志驱动
|
|
229
|
+
进去,落 `app_portal_console`(`docker logs portal-api` 照常可用)。采集段已并入
|
|
230
|
+
`onebox/docker-compose.onebox.yml`(原 portal-logs.yml 并入);collector 只在目录含 observability 时由 `up` 签密钥并显式起。
|
|
231
|
+
- 不建议去掉:它就是联调时看日志的面。坚持要去掉就把 `XGENT_APP_CATALOG` 里的 `observability` 删掉再 `up`(种子会重跑,破坏性),并把 `onebox/docker-compose.onebox.yml` 里五段 logging 注掉——否则 daemon 会有 fluentd 重连噪音。
|
|
232
|
+
- 它的界面(`/apps/observability/`)**不在一盒镜像里**——那是 App 团队经发布提案上传的产物;一盒里只有服务面。
|
|
233
|
+
看落了什么用它的查询面:`POST /svc/observability/api/t<租户UUID去横线>/_search?type=logs`,**只认用户票**(`xsak_` 会 401),
|
|
234
|
+
票从 `/auth/dev/start` 登进去后在浏览器里拿,或 `"$S" dc run --rm portal-api bun -e '…mintForApp…'`。
|
|
235
|
+
|
|
236
|
+
### 2.0 `register-app` 还是 `xgent-app-release`?
|
|
237
|
+
|
|
238
|
+
两条都能把清单送进一盒的门户,**解决的不是同一件事**:
|
|
239
|
+
|
|
240
|
+
| | `register-app`(本 skill 默认) | release-cli(`xgent-app-release` skill) |
|
|
241
|
+
| --- | --- | --- |
|
|
242
|
+
| 到达方式 | 一条命令直写库,幂等 | `xrel_` 令牌 → `POST /api/market/release/:key` → **发布提案** |
|
|
243
|
+
| 首次接入 | 立即生效 | **治理档 ⇒ 落 pending**,要自己在 `/console/releases` 批 |
|
|
244
|
+
| SA 密钥 | manifest 里那个已知明文,改都不用改 | manifest **拒收**明文(`mode:"prod"`),随机签发且 `issuedSecret` **只回显给审批人** |
|
|
245
|
+
| `exchangeInitiatorSecret` | 写进已安装实例(首个租户装完要重跑一次) | manifest 拒收;批准时平台生成并保管、换版注入 `<PREFIX>_APP_SECRET`(要钉值就写进 compose.env,apply 时接管) |
|
|
246
|
+
| **后端镜像 tag** | 不参与(一盒的容器归 compose) | 提交 `deployDescriptor.image`、也落库,**但一盒里没人消费**(见下) |
|
|
247
|
+
| 适合 | 天天改 manifest 调试 —— **默认走这条** | 排练生产发版链:定级会不会被打回治理档、审批屏长什么样、`requiredEnv` 缺值会不会被拒 |
|
|
248
|
+
|
|
249
|
+
release-cli 在一盒里是**通的**(`/api/market/release/*` 就在 portal-api 里,走 `xrel_` bearer、
|
|
250
|
+
刻意不在 `/api/console/*` 下):用 `rockie@xgent.ai` 登控制台签一个 `xrel_` 令牌 → 提交 → 自己批。
|
|
251
|
+
这是**唯一**能在本地把生产那条自助发版链完整演一遍的地方,值得在正式发版前跑一次。
|
|
252
|
+
|
|
253
|
+
⚠️ **`deployDescriptor.image` 在一盒里换不了版。** 生产上「提交新 image tag」就是换后端的完整
|
|
254
|
+
路径(自动档、立即生效 → 排部署任务 → deploy-controller 拉镜像换容器);一盒里这条链**断在
|
|
255
|
+
第三步**:`ensureDeploymentQueued` 在 `isOneBox()` 直接返回不排 job(CR-4 #8),deploy-controller
|
|
256
|
+
本身也在 `onebox-extras` profile 后面、启动即 `refuseOnOneBox`。tag 会如实落进 listing、控制台也
|
|
257
|
+
看得到,但**没有任何进程去拉它**——一盒里跑的容器永远是 compose 起的那个。换后端版本请改
|
|
258
|
+
`compose.env` 的 `APP_IMAGE` 再 `up -d`。
|
|
259
|
+
> 也就是说 release-cli 在一盒里能验的是**治理定级**(这次改动会不会被判自动档 / 要不要审批),
|
|
260
|
+
> 验不了**换版效果**。老镜像还会给你一条永远停在 `deploying` 的假行,别照着它去查部署链。
|
|
261
|
+
|
|
262
|
+
> 密钥那条有干净解法,不必去审批屏抄:portal-api 也读 `compose.env`,把
|
|
263
|
+
> `<PREFIX>_SA_CLIENT_SECRET`(和声明了 `exchangeTargets` 时的 `<PREFIX>_APP_SECRET`)
|
|
264
|
+
> 写在里面,apply 就用你钉的这个值接管并保管,而不是随机签发(EXCHANGE-SECRET-HOLD:
|
|
265
|
+
> 接管后值落在平台侧、换版时注入容器,compose.env 里那行之后可删)。`<PREFIX>` = listingKey 大写、连字符换下划线
|
|
266
|
+
> (`omni-parser` → `OMNI_PARSER`)。`_APP_SECRET` 两侧不一致的症状是跨应用交换在 `/oauth/token` 401。
|
|
267
|
+
|
|
268
|
+
### 2.1 再拉一个别的 App 进来(依赖多模态解析、知识库这类)
|
|
269
|
+
|
|
270
|
+
一条命令:
|
|
271
|
+
|
|
272
|
+
```bash
|
|
273
|
+
"$S" add omni-parser # 或 knowledge / task-gateway / …
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
它按 manifest 把这个 App 装起来:拉镜像 → 注册清单+服务账号(**非破坏性、幂等**,不是那个会
|
|
277
|
+
truncate 的 `db:seed:onebox`)→ 建 `xgent-<key>` 库 → **生成** compose 片段 → 起容器 → 冒烟。
|
|
278
|
+
|
|
279
|
+
**compose 片段是从 manifest 生成的,不是每个 App 在 skill 里预置一份 YAML。** 那样每接一个新
|
|
280
|
+
App 都要改一次 skill,等于把问题换了个地方。manifest 里已经有全部所需:
|
|
281
|
+
|
|
282
|
+
| compose 里的 | 来自 manifest |
|
|
283
|
+
| --- | --- |
|
|
284
|
+
| 镜像(**版本由清单钉住,可复现**;相对名按 `<REGISTRY>/<ONEBOX_PROJECT>/` 补全) | `deployDescriptor.image` |
|
|
285
|
+
| 容器内端口 / 健康路径 | `deployDescriptor.port` / `.healthPath` |
|
|
286
|
+
| 网络别名 `<key>-server`、库名 `xgent-<key>` | `listingKey`(约定) |
|
|
287
|
+
| 自省身份 | `serviceAccount.clientId` |
|
|
288
|
+
| 还要补哪些 env(值归平台) | `requiredEnv` |
|
|
289
|
+
|
|
290
|
+
**密钥不从清单来**:一盒现生成,**同时**写进本地门户 DB 与容器 env —— `add` 会在注册前把
|
|
291
|
+
密钥注进临时清单(用完即删)。所以清单里有没有明文密钥都无所谓,这也正是 release-cli
|
|
292
|
+
提交的那份的样子(prod 模式本来就拒收密钥),而平台目录里那份按红线**只有 `clientId`**。
|
|
293
|
+
|
|
294
|
+
两把,按需生成:
|
|
295
|
+
|
|
296
|
+
| 密钥 | 什么时候有 | 门户侧从哪读 | 容器侧 env |
|
|
297
|
+
| --- | --- | --- | --- |
|
|
298
|
+
| 服务账号密钥 | 总是 | 注入清单的 `serviceAccount.secret` | `<PREFIX>_SA_CLIENT_SECRET` |
|
|
299
|
+
| App Secret | 清单声明了 `exchangeTargets` 时 | 注入清单的 `exchangeInitiatorSecret` | `<PREFIX>_APP_SECRET` |
|
|
300
|
+
|
|
301
|
+
⚠️ 第二把只有**跨应用交换的发起方**需要。漏了它的症状很难查:交换在**发起方**上 401,
|
|
302
|
+
看起来像被调方的问题。另外发起方密钥的哈希只随 register 布进**当时已装**的行 —— 所以第一个
|
|
303
|
+
租户的顺序是「`add` → 浏览器里勾选安装 → 再跑一次 `add`」(幂等);之后装的租户会随安装
|
|
304
|
+
自动补布(EXCHANGE-SECRET-HOLD 的安装路径布线)。
|
|
305
|
+
|
|
306
|
+
**清单从哪来**(优先级从高到低):
|
|
307
|
+
|
|
308
|
+
```bash
|
|
309
|
+
"$S" add <key> --manifest <文件> # ① 你手上有一份,最高优先
|
|
310
|
+
"$S" add <key> --from <目录门户地址> # ② 从 App 清单目录拉
|
|
311
|
+
"$S" add <key> # ③ 配了 MANIFEST_STORE 走②,否则用一盒镜像自带的样例清单
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
**推荐把目录地址配进 `.xgent-registry.env`**,之后 `add` 任意 App 都不用带 `--from`:
|
|
315
|
+
|
|
316
|
+
```
|
|
317
|
+
MANIFEST_STORE=<目录门户地址> # 地址与令牌找门户团队要
|
|
318
|
+
MANIFEST_STORE_READ_TOKEN=xcat_… # 只读令牌:只能读公开清单,读不到任何密钥
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
目录是 App 发版时顺带投递的一份**只读投影**(「这个 App 最近一次说自己是什么」),所以:
|
|
322
|
+
|
|
323
|
+
- 它能拉到的 App **不限于镜像里预置的那四份样例** —— 这正是配它的理由;
|
|
324
|
+
- 它可能比某个门户**已生效**的版本新(那台还没批),也可能旧(那个 App 还没发过版)。
|
|
325
|
+
本地联调用足够;**别拿它当权威**。
|
|
326
|
+
- 取不到时**四种情形各给一句人话 + 两条出路**(`--manifest` 或镜像自带样例),不是堆栈:
|
|
327
|
+
`404` = 那个门户没开目录能力或地址不对 · `401` = 只读令牌失效 ·
|
|
328
|
+
`data:null` = 目录里还没有这个 key(那个 App 还没发过版?)· 连不上 = 检查地址与网络。
|
|
329
|
+
|
|
330
|
+
**镜像不用你操心**:配合调试用的平台侧 App 一律以**稳定版**发到与一盒**同一个项目**下,同一把
|
|
331
|
+
puller key 就能拉。要换版才加 `--image <ref>`。
|
|
332
|
+
|
|
333
|
+
> **你要花时间排查的只有你自己那个 App。** 别人的 App 在这里是稳定件——起不来先 `"$S" doctor`,
|
|
334
|
+
> 还不行报给门户团队,别自己去调它。
|
|
335
|
+
|
|
336
|
+
生成的片段落在 `portal-onebox/generated/<key>.yml`,**别手改**(重跑 `add` 会覆盖);要加东西就
|
|
337
|
+
再叠一层自己的文件(见 §2.2)。少数 App 有清单描述不了的自带 infra(知识库要一个 Chroma 边车),
|
|
338
|
+
那种由 skill 的 `services/<key>.extra.yml` 补——**只有例外才需要文件**。
|
|
339
|
+
|
|
340
|
+
跑完还差**两步,都不是运维活**:
|
|
341
|
+
|
|
342
|
+
1. 浏览器里勾一下:`rockie@xgent.ai` 登控制台 → 租户 → 可用应用 → 勾上它保存。
|
|
343
|
+
(service 型 App 的勾选**就是**安装;不装的话跨应用交换拿不到它的 scope。)
|
|
344
|
+
2. 在**你自己**的 manifest 里两处一起加,再 `"$S" up`:
|
|
345
|
+
|
|
346
|
+
```jsonc
|
|
347
|
+
"scopes": ["…", "omni_parser.read", "omni_parser.parse"],
|
|
348
|
+
"exchangeTargets": ["omni-parser"] // 没有它,声明对方 namespace 的 scope 会被 register-app 拒
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
首次跨应用调用浏览器会多弹一次交换授权页,是正常的。
|
|
352
|
+
|
|
353
|
+
> **为什么建库/迁移在一盒要 `add` 代劳,生产不用。** 生产上这两件各有其主:**建库**归运维
|
|
354
|
+
> (不在部署链里),**迁移**归部署链——`deployDescriptor.migrateArgs` 让 deploy-controller 在换
|
|
355
|
+
> 容器**之前**跑一个一次性容器(同镜像、同 env、只换 argv),失败就让这次部署失败而**旧容器
|
|
356
|
+
> 继续服务**,不会变成换完之后的崩溃循环。一盒**两样都没有**(没有 controller,`migrateArgs`
|
|
357
|
+
> 一次也不会跑),所以 `add` 替你建库,迁移靠镜像自己启动时迁——**这也意味着一盒里验不出
|
|
358
|
+
> `migrateArgs` 写得对不对**,那条只能等真部署。
|
|
359
|
+
|
|
360
|
+
### 2.2 改 compose 的规矩(叠一层,别动 init 铺出来的)
|
|
361
|
+
|
|
362
|
+
`"$S" dc` 已经替你拼好了:`--env-file compose.env` + `-f docker-compose.yml` +
|
|
363
|
+
`-f onebox/docker-compose.onebox.yml`(填了 App 那两行再加 app-dev / app-frontend)+ 一串
|
|
364
|
+
`--profile`。`"$S" chain` 把这串打出来,想自己敲 compose 时抄它。
|
|
365
|
+
|
|
366
|
+
**三条规矩:**
|
|
367
|
+
|
|
368
|
+
1. **改配置值 → `compose.env` 末尾追加**,不要回上面改。端口、项目名、镜像 tag、你自己那些
|
|
369
|
+
env 全在这里;env-file 是**后定义者胜**,追加就是覆盖。
|
|
370
|
+
2. **改拓扑(加服务、换 image、改别名) → 写一个新文件叠在最后**:
|
|
371
|
+
`XGENT_ONEBOX_HOME=portal-onebox "$S" dc -f portal-onebox/<你的>.yml up -d <服务名>`。
|
|
372
|
+
`-f` 出现在子命令前就仍是全局选项,位置没问题。
|
|
373
|
+
3. **别改 `portal-onebox/` 里 init 铺出来的那几个 yml** —— 它们是从镜像里取出来的,
|
|
374
|
+
`init --force` 会原样覆盖,而且换一版镜像就该跟着换。你的东西永远是**新文件**。
|
|
375
|
+
|
|
376
|
+
**合并规则(实测 `docker compose config`,三条都不直觉):**
|
|
377
|
+
|
|
378
|
+
| 字段 | 规则 |
|
|
379
|
+
| --- | --- |
|
|
380
|
+
| `command` / `entrypoint` | **整体替换**(后者赢,不拼接) |
|
|
381
|
+
| `environment`、`labels` 这类映射 | **逐键合并**,同名键后者赢 |
|
|
382
|
+
| `expose` / `ports` / `networks.*.aliases` 这类序列 | **追加**——⚠️ 别指望用 override "改" 一个别名,你会**同时得到两个**;要换就在自己的文件里定义整个服务 |
|
|
383
|
+
| `volumes` | 按**容器内挂载点**合并:`v3:/data` 会顶掉上一层的 `v1:/data`,而 `v2:/other` 原样保留 |
|
|
384
|
+
|
|
385
|
+
改完先看合并结果再起(不 up 也能看):
|
|
386
|
+
|
|
387
|
+
```bash
|
|
388
|
+
XGENT_ONEBOX_HOME=portal-onebox "$S" dc -f portal-onebox/<你的>.yml config | less
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
**加一个新服务,必备四件**(少哪件的症状都在排查表里):`image` · `platform`(arm64 机器上跑
|
|
392
|
+
amd64 镜像要 `linux/amd64`)· 网络别名 `<key>-server`(反代靠它找上游)· `expose: ["8080"]`
|
|
393
|
+
(容器内统一 8080)。
|
|
394
|
+
|
|
395
|
+
## 3. 冒烟
|
|
396
|
+
|
|
397
|
+
```bash
|
|
398
|
+
"$SKILL_DIR/scripts/onebox.sh" smoke
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
探 `GET /health`(门户;注意**不是** `/api/health`,那个 404)和每个 `GET /svc/<key>/health`。
|
|
402
|
+
全绿再开浏览器(地址以 `init` 回显的为准,改过端口就不是 `http://localhost`)。
|
|
403
|
+
|
|
404
|
+
**smoke 的 HTTP 检查不能覆盖信封内的 db 判据。** 外部 App 支持平铺与 Envelope:HTTP 非 2xx 不通过;2xx 顶层含 `ok` 时,必须 `ok === true && data.db === true`;否则按 2xx 判健康。发布前按 `portal-external-app` skill 的 `references/health-contract.md` 运行其 `scripts/verify-health.ts`(直连与 `/svc` 两条路径),不要自行增加“禁止信封”或字段命名限制。
|
|
405
|
+
|
|
406
|
+
**dev 登录的入口**:登录页密码表单下方的「本地开发账号」按钮(`DEV_MOCK_OAUTH=true` 才出现),
|
|
407
|
+
或直接打开 `/auth/dev/start` 进 mock IdP 选账号 → 选 `rockie@xgent.ai`(演示租户 admin + 平台管理员)。
|
|
408
|
+
**按钮没出现**:先 `curl <地址>/auth/providers` 看 `dev` 字段在不在——在就走 `/auth/dev/start`,
|
|
409
|
+
那说明这版镜像的前端与 API 对不齐,`"$S" pull` 换新的。
|
|
410
|
+
|
|
411
|
+
种子只种两个账号,另一个是 `liming@xgent.ai`(普通成员)——**ACL 成员基线没到位的问题只在非管理员身上现形**,
|
|
412
|
+
验收要用它再走一遍,管理员那边永远是绿的。
|
|
413
|
+
|
|
414
|
+
- **micro**:应用市场安装 →(一盒**不排**部署任务:没有部署控制器,排了也没人取,所以状态如实停在
|
|
415
|
+
`not_deployed`。老镜像会给你一条**永远 `deploying`** 的行 —— 两种都不挡使用,别去查部署链)→ 应用中心打开 → **首次打开先出「授权并打开」同意屏**(正常行为,自动化走查要把这一步算进去)→
|
|
416
|
+
iframe 加载 `/apps/<key>/` → `sdk.ready()` 握手 → `sdk.callService()` 通 → 首次跨应用读数据再弹一次交换授权页。
|
|
417
|
+
- **service**:无 UI,走 curl —— `/health` 判活 · 缺/错 token 应 401/403(四道闸)· 正确 TDT 应 200 信封。
|
|
418
|
+
|
|
419
|
+
> 你的后端要实现的运行时契约(验 TDT + 四道闸、解包自省信封 `claims = body.data ?? body`、
|
|
420
|
+
> 按 `claims.tenant_id` 隔离、`/health`、容器内统一监听 **8080**)不在本 skill 范围内——
|
|
421
|
+
> 一盒不替你实现。完整说明在 init 之后的 `portal-onebox/app-devkit/README.md`。
|
|
422
|
+
|
|
423
|
+
## 4. 出问题了
|
|
424
|
+
|
|
425
|
+
```bash
|
|
426
|
+
"$S" doctor
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
**先跑它,别翻文档。** 它把排查表里能自动判的都判一遍(镜像版本、命名卷属主、内联 key 撞 map、
|
|
430
|
+
架构不匹配、缺库、目录里有 key 但容器没起、每条 `/svc` 的 404/502/000),每条不过的下面直接给
|
|
431
|
+
一行可粘的修法。判不了的再对着 **[references/troubleshooting.md](references/troubleshooting.md)**
|
|
432
|
+
按「你看到什么」对号入座。
|
|
433
|
+
|
|
434
|
+
> **「照文档做,行为却不符」先看版本。** `status` / `smoke` 里 `/health` 那行会回一个 `version`:
|
|
435
|
+
> `init` 把镜像的 tag + ID + 构建日期写进了 `compose.env` 的 `APP_VERSION`。报 `dev` 说明这份 compose.env
|
|
436
|
+
> 是老 `init` 铺的(或你自己改过)。一盒镜像比文档旧一天,就足以让「注册后自动授予租户」这类行为整个不存在,
|
|
437
|
+
> 而现场没有任何报错 —— 真实案例(CR-4)。`"$S" pull` 换新的再判。
|
|
438
|
+
那张表按「你看到什么」编排。最容易白白浪费半天的两条先放这儿:
|
|
439
|
+
|
|
440
|
+
> **看到 `unhealthy` 先读那条探针,再决定要不要查。**
|
|
441
|
+
> `docker inspect <容器> --format '{{json .Config.Healthcheck.Test}}'`,三种情形:
|
|
442
|
+
> · `curl -fsS …/health`(`portal-api` / `*-server`)⇒ **假红**,且说明这盒的 compose 是**旧镜像**
|
|
443
|
+
> 里那份:精简镜像没装 `curl`,`docker inspect .State.Health` 里是清一色 `curl: not found`。
|
|
444
|
+
> · `wget … http://127.0.0.1:80/`(`reverse-proxy`)⇒ 只要 `XGENT_SITE_ADDRESS` 是主机名就**必然**
|
|
445
|
+
> 假红:Caddy 把它 308 到 `https://127.0.0.1/`,对一个 IP 建 TLS 没有 SNI,回 `SSL alert number 80`。
|
|
446
|
+
> · 探针已是 `bun -e fetch(...)` / `curl -fsS -o /dev/null http://127.0.0.1:80/`(新镜像的两条)
|
|
447
|
+
> 却仍 `unhealthy` ⇒ **真红**,去看 `"$S" dc logs <服务>`。
|
|
448
|
+
> 判活一律以 `"$S" smoke` 的宿主侧探测为准;pg/redis/minio 的 healthy 一直是真的。
|
|
449
|
+
|
|
450
|
+
> **`COMPOSE_PROJECT_NAME` 固定是 `xgent-onebox`,别靠改名来「并存」两套。** 同机两套 compose
|
|
451
|
+
> 项目名相同,compose 会认为它们是同一项目——容器互相接管、命名卷共享,症状是「我起了一盒,
|
|
452
|
+
> 结果把另一套的容器停了」。一台机器本来就只该有一套一盒(见文首「一套就够」):init 检测到
|
|
453
|
+
> 本机已有别的一盒会停下,第二个 App 要联调就接进现有那套。
|
|
454
|
+
|
|
455
|
+
## 5. 后端想跑在宿主上(保留热重载)
|
|
456
|
+
|
|
457
|
+
`app-backend` 默认是**镜像**,靠网络别名 `<key>-server` 被反代解析到;宿主上 `bun dev` 起的进程在容器网里
|
|
458
|
+
没有这个名字,而每改一行就重建镜像等于没有热重载。绕法是让一个转发容器顶住那个别名:
|
|
459
|
+
|
|
460
|
+
```yaml
|
|
461
|
+
# portal-onebox/host-backend.yml —— 叠在 app-dev.yml 之后
|
|
462
|
+
services:
|
|
463
|
+
app-backend:
|
|
464
|
+
image: alpine/socat
|
|
465
|
+
command: TCP-LISTEN:8080,fork,reuseaddr TCP:host.docker.internal:<你 dev server 的端口>
|
|
466
|
+
extra_hosts: ["host.docker.internal:host-gateway"]
|
|
467
|
+
```
|
|
468
|
+
|
|
469
|
+
然后 `XGENT_ONEBOX_HOME=portal-onebox "$S" dc -f portal-onebox/host-backend.yml up -d app-backend`。
|
|
470
|
+
此时 `APP_IMAGE` 不再被用到(compose 仍要求它有值,随便填一个);`APP_KEY` 照旧——别名还是靠它。
|
|
471
|
+
|
|
472
|
+
**宿主进程的 DB / 缓存 / 对象存储也用一盒的,别再单起。** postgres / redis / minio 都发布了
|
|
473
|
+
宿主端口,而 init 挑端口时避开了本机已占用的口——所以它们和你本地 dev 栈的
|
|
474
|
+
5432 / 6379 / 9000-9001 不冲突(典型落位 15432 / 16379 / 19000-19001;以 `compose.env` 末尾的
|
|
475
|
+
`POSTGRES_PORT` / `REDIS_PORT` / `MINIO_PORT` / `MINIO_CONSOLE_PORT` 为准,`"$S" env` 也回显)。
|
|
476
|
+
调试你自己的 App 时——宿主上的 dev server、另一个 repo 的服务、临时排查脚本——直接指过来:
|
|
477
|
+
|
|
478
|
+
| 服务 | 宿主侧地址 | 凭据 / 说明 |
|
|
479
|
+
| --- | --- | --- |
|
|
480
|
+
| Postgres | `postgres://postgres:postgres@localhost:<POSTGRES_PORT>/xgent-<你的key>` | 库不存在先建(§2 3b 那条 CREATE DATABASE) |
|
|
481
|
+
| Redis | `localhost:<REDIS_PORT>` | 无密码 |
|
|
482
|
+
| MinIO (S3) | `http://localhost:<MINIO_PORT>` | `minioadmin` / `minioadmin`;控制台在 `<MINIO_CONSOLE_PORT>`,桶自己建(建议 `xgent-<你的key>`) |
|
|
483
|
+
|
|
484
|
+
这样宿主进程和容器里的 App 看到的是同一份库、同一个桶。注意上面是**宿主侧**地址——
|
|
485
|
+
容器网里那套服务名与端口不变(`postgres:5432` / `redis:6379` / `minio:9000`)。
|
|
486
|
+
|
|
487
|
+
## 6. 重置与拆栈
|
|
488
|
+
|
|
489
|
+
```bash
|
|
490
|
+
S="$SKILL_DIR/scripts/onebox.sh"
|
|
491
|
+
"$S" dc down # 停容器,留命名卷(数据还在,下次 up 接着用)
|
|
492
|
+
"$S" dc down -v # ★ 连命名卷一起删:pg/minio/apps/caddy 的数据全没
|
|
493
|
+
```
|
|
494
|
+
|
|
495
|
+
只想重置门户数据:重跑 `db:seed:onebox`(同样破坏性),然后**重跑 `register-app`**(你的 listing 被种子清掉了),
|
|
496
|
+
最后 `caddy reload`。种子会重新生成 UUID,浏览器会话随之失效——重登一次 dev 登录,不是坏了。
|
|
497
|
+
|
|
498
|
+
换门户镜像版本:改 `compose.env` 末尾的 `XGENT_IMAGE` / `XGENT_PROXY_IMAGE` 两行,
|
|
499
|
+
`"$S" pull` 把新版本拉下来,再 `"$S" dc up -d`。compose 资产要不要跟着更新,
|
|
500
|
+
重跑 `init --force --home <另一个空目录>` 对比着看。
|
|
501
|
+
|
|
502
|
+
⚠️ **换镜像要修的毛病,多半还得配一次 `down -v`,而且顺序是「先换镜像、再删卷」。**
|
|
503
|
+
命名卷的属主与初始内容由**第一次挂它的那个容器**定,之后既不会因为换镜像而变,也不会被
|
|
504
|
+
`up -d` 纠正。所以:只 `pull` 不删卷 = 老卷带着老属主继续用;只 `down -v` 不 `pull` = 用老镜像
|
|
505
|
+
又建出一个一样坏的卷。EACCES 那一族(`/svc` 放行写不成 → `/svc/<key>` 404、发布前端产物报
|
|
506
|
+
`/srv/www/apps` 不可写)就是这个形状,修法见排查表 [§7](references/troubleshooting.md#7-命名卷属主不对eacces-一族)。
|
|
507
|
+
一盒是本地联调环境、数据不值钱,**首选就是 `"$S" pull` → `"$S" dc down -v` → 按 §2 重铺**,
|
|
508
|
+
别为了保住一个演示库去绕。
|
|
509
|
+
|
|
510
|
+
## 7. 一盒不是门户,别拿它当门户
|
|
511
|
+
|
|
512
|
+
- 它只带上面四个基础服务,其余门户内置 App 的代码**不在镜像里**——
|
|
513
|
+
`bun --filter @xgent/<别的>-server …` 报 `no packages matched the filter` 是刻意的。
|
|
514
|
+
- `bootstrap:prod` 与部署控制器**启动即拒**并打印原因;完整的 `db:seed`(十几个 App 的种子链)也必失败,
|
|
515
|
+
一盒只能用 `db:seed:onebox`。
|
|
516
|
+
- 它是 dev 联调套件:mock OAuth 常开、服务账号密钥是已知明文。**不要用于生产,也不要暴露到公网。**
|
|
517
|
+
- 不装 ffmpeg:`PREVIEW_MEDIA_CONVERTER_URL` 必须留空,视频海报/网格缩略图退化成图标。
|
|
518
|
+
- 文件管理界面**不渲染预览**(镜像构建时关掉了前端的格式渲染器),打开任何文件都是下载卡;
|
|
519
|
+
服务端的预览描述符 API 不变,你的 App 自带 `@xgent/file-preview` 时照常渲染。
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# 门户一盒 —— 镜像拉取凭证(本地配置模板)
|
|
2
|
+
#
|
|
3
|
+
# cp puller.env.example ./.xgent-registry.env # 或放 ~/.config/xgent/registry.env
|
|
4
|
+
# chmod 600 ./.xgent-registry.env
|
|
5
|
+
# echo '.xgent-registry.env' >> .gitignore # ⚠️ 别提交
|
|
6
|
+
#
|
|
7
|
+
# 按 KEY=value 逐行填。同名【环境变量优先】—— CI 里直接注入 REGISTRY / PULLER_AUTH,
|
|
8
|
+
# 不必落盘。查找顺序见 onebox.sh --help。
|
|
9
|
+
|
|
10
|
+
# ── 必填 ────────────────────────────────────────────────
|
|
11
|
+
# 镜像仓库域名。不带 https://、不带端口、无尾斜杠。地址找你们的开发团队要。
|
|
12
|
+
REGISTRY=
|
|
13
|
+
|
|
14
|
+
# 只读拉取凭证 = base64 的「用户名:口令」。
|
|
15
|
+
#
|
|
16
|
+
# printf '%s' '<用户名>:<口令>' | base64
|
|
17
|
+
#
|
|
18
|
+
# 它和 ~/.docker/config.json 里 auths.<REGISTRY>.auth 是同一个值,两边可以互抄。
|
|
19
|
+
# 这是【团队共用的只读凭证】,不是谁的个人密码:有人离职要找开发团队轮换,
|
|
20
|
+
# 而轮换会同时作废全团队的现有凭证。
|
|
21
|
+
#
|
|
22
|
+
# ⚠️ base64 不是加密 —— `base64 -d` 一条命令就还原成明文。别提交进 git,
|
|
23
|
+
# 别转发出团队;共用机器上让它进系统钥匙串(Docker 的 credsStore)。
|
|
24
|
+
PULLER_AUTH=
|
|
25
|
+
|
|
26
|
+
# 【门户一盒镜像】所在的项目名。填了它 `onebox.sh init` / `pull` 就不用 --image ——
|
|
27
|
+
# 默认拉 <REGISTRY>/<ONEBOX_PROJECT>/one-box:latest(反代同仓同 tag)。值找开发团队要。
|
|
28
|
+
ONEBOX_PROJECT=
|
|
29
|
+
|
|
30
|
+
# 【你自己 App 镜像】要推到哪个项目(xgent-image-push 用的就是这一项,两个 skill 共用本文件)。
|
|
31
|
+
# ⚠️ 它和 ONEBOX_PROJECT 通常【不是同一个】:一盒是门户团队发的调试镜像,你的 App 镜像在你自己的项目下。
|
|
32
|
+
# 只起一盒、不推镜像的话可以留空;ONEBOX_PROJECT 缺席时脚本会回退用它并明确告警。
|
|
33
|
+
PROJECT=
|
|
34
|
+
|
|
35
|
+
# ── App 清单目录(可选,APP-CATALOG-1)────────────────────
|
|
36
|
+
# 一盒的 `add <key>` 默认从【清单目录】拉那个 App 的清单,取代「镜像里只预置了那几份
|
|
37
|
+
# 样例」。目录是一份**只读投影**:它只回一份 JSON,不下发、不部署、不编排任何东西。
|
|
38
|
+
#
|
|
39
|
+
# 地址与令牌找开发团队要。两项都留空 ⇒ `add` 回落到镜像自带的样例清单(离线可用)。
|
|
40
|
+
|
|
41
|
+
# 目录部署的地址(带协议,无尾斜杠)。同时是 release-cli 投递清单的第二站。
|
|
42
|
+
MANIFEST_STORE=
|
|
43
|
+
|
|
44
|
+
# 目录【只读】令牌(xcat_…)。它是跨 App 的读凭证 —— 一把泄露 = 全部 App 的公开清单
|
|
45
|
+
# 可读(公开字段而已,里面没有任何密钥),但仍要按凭证对待:chmod 600 + 别提交。
|
|
46
|
+
MANIFEST_STORE_READ_TOKEN=
|
|
47
|
+
|
|
48
|
+
# ── 发布(xgent-app-release 用的三项,两个 skill 共用本文件)────────────
|
|
49
|
+
# 本文件就是【凭证文件】:令牌写这里,release-cli 自己读,于是令牌**从不经过 agent
|
|
50
|
+
# 的上下文**。反过来强制走 --token,agent 必须先把它取出来再传进去 —— 那才是把密钥
|
|
51
|
+
# 写进对话记录、工具日志和命令行(同机 `ps` 可见)。
|
|
52
|
+
# release-cli 每次运行都替你查两条:文件 mode 是不是 600、有没有被 .gitignore 挡住。
|
|
53
|
+
|
|
54
|
+
# 本次发版的【目标部署】地址(等价于旧的 XGENT_PORTAL_URL,两者都认)。
|
|
55
|
+
TARGET_XGENT_PLATFORM=
|
|
56
|
+
|
|
57
|
+
# 目标部署的发布令牌(xrel_…,按 App 绑定)。平台管理员在 控制台 › 应用市场 签发。
|
|
58
|
+
XGENT_RELEASE_TOKEN=
|
|
59
|
+
|
|
60
|
+
# 目录部署的发布令牌(xrel_…)。未填 ⇒ 回落 XGENT_RELEASE_TOKEN
|
|
61
|
+
# (TARGET_XGENT_PLATFORM 与 MANIFEST_STORE 是同一台时,那就是对的那把)。
|
|
62
|
+
MANIFEST_STORE_TOKEN=
|
|
63
|
+
|
|
64
|
+
# 这个仓库对应的应用标识。一个 repo 一个 App,从头到尾不变。
|
|
65
|
+
LISTING_KEY=
|
|
66
|
+
|
|
67
|
+
# ── 私有包(@xgent/*)────────────────────────────────────
|
|
68
|
+
# 这里【没有】npm 令牌这一项,也不该有:装 @xgent/* 不需要云账号,也不需要长期凭据。
|
|
69
|
+
# 用上面那枚 XGENT_RELEASE_TOKEN 现换一枚 ≤12 h 的只读令牌即可(门户持云凭据):
|
|
70
|
+
#
|
|
71
|
+
# RELEASE_SKILL_DIR="<xgent-app-release 的 SKILL.md 所在目录>"
|
|
72
|
+
# eval "$(node "$RELEASE_SKILL_DIR/scripts/npm-token.mjs")"
|
|
73
|
+
#
|
|
74
|
+
# 把它写进本文件只会得到一枚 12 小时后失效的死值。
|