create-ailk 0.24.0 → 0.25.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +42 -20
- package/component-catalog.json +3 -3
- package/component-catalog.md +3 -3
- package/dist/add-module.js +4 -2
- package/dist/add-route.d.ts +12 -1
- package/dist/add-route.js +31 -3
- package/dist/cli.js +12 -7
- package/dist/derive-architecture.d.ts +3 -4
- package/dist/derive-architecture.js +65 -29
- package/dist/lib/design-checks.d.ts +9 -4
- package/dist/lib/design-checks.js +13 -7
- package/dist/lib/extract-module-bundle.js +29 -2
- package/dist/lib/fetch-template-snapshot.d.ts +1 -1
- package/dist/lib/fetch-template-snapshot.js +7 -3
- package/dist/lib/import-graph.d.ts +1 -1
- package/dist/lib/import-graph.js +4 -4
- package/dist/lib/module-license-gate.d.ts +12 -1
- package/dist/lib/module-license-gate.js +34 -12
- package/dist/module-architecture.d.ts +20 -3
- package/dist/module-architecture.js +117 -550
- package/dist/paid-sections.d.ts +25 -1
- package/dist/paid-sections.js +88 -3
- package/dist/surfaces.js +10 -2
- package/dist/template-record.d.ts +14 -4
- package/dist/template-record.js +23 -5
- package/dist/topology.d.ts +16 -3
- package/dist/topology.js +31 -19
- package/dist/update.d.ts +10 -1
- package/dist/update.js +540 -16
- package/package.json +3 -3
- package/release-scope.json +1 -1
- package/templates/.claude/cloudparity-repo-hooks.json +5 -0
- package/templates/.claude/hooks/template-guard.sh +137 -0
- package/templates/.claude/rules/extending.md +106 -0
- package/templates/.claude/rules/loop-contract.md +2 -2
- package/templates/.claude/settings.json +11 -0
- package/templates/.env.example +5 -5
- package/templates/.github/workflows/ci.yml +7 -4
- package/templates/CLAUDE.md +11 -1
- package/templates/CONVENTIONS.md +8 -10
- package/templates/README.md +14 -13
- package/templates/apps/api/.env.example +2 -2
- package/templates/apps/api/CLAUDE.md +102 -76
- package/templates/apps/api/jest.config.cjs +15 -5
- package/templates/apps/api/package.json +16 -20
- package/templates/apps/api/src/__tests__/trusted-origins.server.test.ts +2 -2
- package/templates/apps/api/src/__tests__/vercel-handler.test.ts +4 -4
- package/templates/apps/api/src/index.ts +1 -1
- package/templates/apps/api/src/lib/__mocks__/prisma.ts +3 -3
- package/templates/apps/api/src/modules/commerce.ts +10 -0
- package/templates/apps/api/src/modules/content-write.ts +10 -0
- package/templates/apps/api/src/modules/multi-tenant.ts +10 -0
- package/templates/apps/api/src/modules/scheduling.ts +10 -0
- package/templates/apps/api/src/modules/signal-collectors.ts +10 -0
- package/templates/apps/api/src/modules/workspace.ts +10 -0
- package/templates/apps/api/src/server.ts +117 -1882
- package/templates/apps/api/vercel.json +2 -2
- package/templates/apps/mcp/CLAUDE.md +67 -20
- package/templates/apps/mcp/__tests__/app-entry.test.ts +4 -254
- package/templates/apps/mcp/__tests__/boot-file.test.ts +92 -0
- package/templates/apps/mcp/jest.config.cjs +6 -1
- package/templates/apps/mcp/package.json +5 -13
- package/templates/apps/mcp/src/app.ts +8 -7
- package/templates/apps/mcp/src/index.ts +6 -34
- package/templates/apps/mcp/src/lib/paid-tools.generated.ts +10 -0
- package/templates/apps/mcp/src/lib/topology.generated.ts +2 -2
- package/templates/apps/mcp/src/site.ts +12 -0
- package/templates/apps/web/.env.example +1 -1
- package/templates/apps/web/CLAUDE.md +10 -3
- package/templates/apps/web/app/.well-known/mcp.json/route.ts +9 -3
- package/templates/apps/web/app/[locale]/contact/intake-analytics.ts +1 -1
- package/templates/apps/web/app/[locale]/flows/[slug]/__tests__/magnet-page.test.tsx +22 -1
- package/templates/apps/web/app/[locale]/flows/[slug]/magnet-page.tsx +7 -3
- package/templates/apps/web/app/[locale]/pricing/__tests__/unconnected.test.tsx +43 -0
- package/templates/apps/web/app/[locale]/pricing/page.tsx +7 -3
- package/templates/apps/web/app/api/offerings/checkout/[lookupKey]/__tests__/route.test.ts +222 -0
- package/templates/apps/web/app/api/offerings/checkout/[lookupKey]/route.ts +10 -3
- package/templates/apps/web/app/api/revalidate/route.ts +3 -3
- package/templates/apps/web/auth.ts +2 -2
- package/templates/apps/web/jest.config.cjs +1 -0
- package/templates/apps/web/lib/auth-email.ts +1 -1
- package/templates/apps/web/lib/relay.ts +2 -2
- package/templates/apps/web/lib/release-scope.ts +47 -0
- package/templates/apps/web/lib/server-api.ts +1 -1
- package/templates/apps/web/src/lib/commerce-claim.ts +1 -1
- package/templates/customizations.yaml +37 -0
- package/templates/database/prisma.config.ts +10 -14
- package/templates/database/seed-test.ts +2 -2
- package/templates/database/seed.ts +5 -5
- package/templates/package.json +12 -6
- package/templates/pnpm-workspace.yaml +0 -1
- package/templates/project.yaml +16 -8
- package/templates/tools/jest/reporters.cjs +65 -0
- package/templates/tools/lint-architecture.ts +553 -7
- package/templates/tsconfig.json +1 -2
- package/versions.json +48 -35
- package/templates/apps/api/src/__tests__/commerce-claim-registration.test.ts +0 -409
- package/templates/apps/api/src/__tests__/factories/agent-caller.ts +0 -102
- package/templates/apps/api/src/__tests__/factories/content-fixture.ts +0 -138
- package/templates/apps/api/src/__tests__/factories/in-memory-prisma.ts +0 -441
- package/templates/apps/api/src/__tests__/factories/index.ts +0 -70
- package/templates/apps/api/src/__tests__/factories/lead-fixture.ts +0 -82
- package/templates/apps/api/src/__tests__/leads-forwarded-rate-limit.test.ts +0 -135
- package/templates/apps/api/src/__tests__/services/enrichment-shim.test.ts +0 -126
- package/templates/apps/api/src/__tests__/stripe-boot.test.ts +0 -132
- package/templates/apps/api/src/__tests__/support/hub-sign-in-fake-db.ts +0 -362
- package/templates/apps/api/src/bin/__tests__/rate-limit-probe.test.ts +0 -184
- package/templates/apps/api/src/bin/abandon-sweep.ts +0 -42
- package/templates/apps/api/src/bin/rate-limit-probe.ts +0 -53
- package/templates/apps/api/src/bin/spokes.ts +0 -198
- package/templates/apps/api/src/bin/stripe-connections-rekey.ts +0 -45
- package/templates/apps/api/src/config/__tests__/hub-require-spoke-key.test.ts +0 -196
- package/templates/apps/api/src/config/__tests__/index.test.ts +0 -233
- package/templates/apps/api/src/config/__tests__/modules.test.ts +0 -76
- package/templates/apps/api/src/config/__tests__/stripe-connection-key.test.ts +0 -185
- package/templates/apps/api/src/config/__tests__/trusted-origins.test.ts +0 -238
- package/templates/apps/api/src/config/index.ts +0 -596
- package/templates/apps/api/src/config/modules.ts +0 -83
- package/templates/apps/api/src/lib/__tests__/agent-store.test.ts +0 -581
- package/templates/apps/api/src/lib/__tests__/auth-email-budget.test.ts +0 -143
- package/templates/apps/api/src/lib/__tests__/consent-ledger-double.ts +0 -237
- package/templates/apps/api/src/lib/__tests__/consent-store.test.ts +0 -353
- package/templates/apps/api/src/lib/__tests__/content-adapter.test.ts +0 -201
- package/templates/apps/api/src/lib/__tests__/deliverable-asset-store.test.ts +0 -224
- package/templates/apps/api/src/lib/__tests__/error-serializer.test.ts +0 -120
- package/templates/apps/api/src/lib/__tests__/errors.test.ts +0 -94
- package/templates/apps/api/src/lib/__tests__/file-fallback.test.ts +0 -144
- package/templates/apps/api/src/lib/__tests__/fixtures/HomePage/home.mdx +0 -8
- package/templates/apps/api/src/lib/__tests__/flow-completion-store.test.ts +0 -149
- package/templates/apps/api/src/lib/__tests__/flow-rename-race.db.test.ts +0 -116
- package/templates/apps/api/src/lib/__tests__/hub-sign-in-store.test.ts +0 -209
- package/templates/apps/api/src/lib/__tests__/lead-capture-store.test.ts +0 -257
- package/templates/apps/api/src/lib/__tests__/lead-delivery.test.ts +0 -96
- package/templates/apps/api/src/lib/__tests__/outbound-http.test.ts +0 -125
- package/templates/apps/api/src/lib/__tests__/prisma.test.ts +0 -165
- package/templates/apps/api/src/lib/__tests__/require-commerce-claim.test.ts +0 -317
- package/templates/apps/api/src/lib/__tests__/require-paid-tier.test.ts +0 -129
- package/templates/apps/api/src/lib/__tests__/site.test.ts +0 -308
- package/templates/apps/api/src/lib/__tests__/slice-load.test.ts +0 -89
- package/templates/apps/api/src/lib/__tests__/spoke-store.test.ts +0 -202
- package/templates/apps/api/src/lib/__tests__/stripe-admission.test.ts +0 -217
- package/templates/apps/api/src/lib/__tests__/stripe.test.ts +0 -82
- package/templates/apps/api/src/lib/agent-store.ts +0 -613
- package/templates/apps/api/src/lib/auth-email-budget.ts +0 -161
- package/templates/apps/api/src/lib/consent-store.ts +0 -363
- package/templates/apps/api/src/lib/content-adapter.ts +0 -112
- package/templates/apps/api/src/lib/deliverable-asset-store.ts +0 -96
- package/templates/apps/api/src/lib/error-serializer.ts +0 -164
- package/templates/apps/api/src/lib/errors.ts +0 -95
- package/templates/apps/api/src/lib/file-fallback.ts +0 -87
- package/templates/apps/api/src/lib/flow-completion-store.ts +0 -136
- package/templates/apps/api/src/lib/hub-sign-in-store.ts +0 -455
- package/templates/apps/api/src/lib/lead-capture-store.ts +0 -122
- package/templates/apps/api/src/lib/lead-delivery.ts +0 -52
- package/templates/apps/api/src/lib/license-key-store.ts +0 -45
- package/templates/apps/api/src/lib/locales.ts +0 -201
- package/templates/apps/api/src/lib/outbound-http.ts +0 -127
- package/templates/apps/api/src/lib/prisma.ts +0 -21
- package/templates/apps/api/src/lib/proposal-paid-store.ts +0 -66
- package/templates/apps/api/src/lib/rate-limit-probe.ts +0 -165
- package/templates/apps/api/src/lib/rate-limit-store.ts +0 -142
- package/templates/apps/api/src/lib/require-commerce-claim.ts +0 -250
- package/templates/apps/api/src/lib/require-paid-tier.ts +0 -53
- package/templates/apps/api/src/lib/site.ts +0 -257
- package/templates/apps/api/src/lib/slice-load.ts +0 -90
- package/templates/apps/api/src/lib/spoke-store.ts +0 -180
- package/templates/apps/api/src/lib/stripe.ts +0 -321
- package/templates/apps/api/src/lib/webhook-idempotency.ts +0 -156
- package/templates/apps/api/src/middleware/__tests__/adversarial/bearer-token-format.test.ts +0 -111
- package/templates/apps/api/src/middleware/__tests__/adversarial/cookie-or-bearer-precedence.test.ts +0 -172
- package/templates/apps/api/src/middleware/__tests__/adversarial/csrf-bearer-skip.test.ts +0 -119
- package/templates/apps/api/src/middleware/__tests__/adversarial/csrf-cookie-path.test.ts +0 -138
- package/templates/apps/api/src/middleware/__tests__/adversarial/csrf-trusted-origins.test.ts +0 -142
- package/templates/apps/api/src/middleware/__tests__/adversarial/session-fixation.test.ts +0 -155
- package/templates/apps/api/src/middleware/__tests__/adversarial/session-timeout.test.ts +0 -139
- package/templates/apps/api/src/middleware/__tests__/auth.bearer-path.test.ts +0 -562
- package/templates/apps/api/src/middleware/__tests__/auth.both-present-precedence.test.ts +0 -76
- package/templates/apps/api/src/middleware/__tests__/auth.cookie-path.test.ts +0 -220
- package/templates/apps/api/src/middleware/__tests__/auth.database-not-configured.test.ts +0 -97
- package/templates/apps/api/src/middleware/__tests__/auth.hub-session-path.test.ts +0 -557
- package/templates/apps/api/src/middleware/__tests__/auth.neither-present.test.ts +0 -72
- package/templates/apps/api/src/middleware/__tests__/auth.optional-cookie.test.ts +0 -140
- package/templates/apps/api/src/middleware/__tests__/default-tenant.test.ts +0 -721
- package/templates/apps/api/src/middleware/__tests__/rate-limit-cross-isolate.db.test.ts +0 -220
- package/templates/apps/api/src/middleware/__tests__/rate-limit-store.test.ts +0 -430
- package/templates/apps/api/src/middleware/__tests__/rate-limit.test.ts +0 -1409
- package/templates/apps/api/src/middleware/__tests__/write-budget.test.ts +0 -174
- package/templates/apps/api/src/middleware/auth.ts +0 -864
- package/templates/apps/api/src/middleware/default-tenant.ts +0 -166
- package/templates/apps/api/src/middleware/rate-limit.ts +0 -983
- package/templates/apps/api/src/openapi/__tests__/openapi.test.ts +0 -391
- package/templates/apps/api/src/openapi/__tests__/spec-identity.test.ts +0 -182
- package/templates/apps/api/src/openapi/index.ts +0 -18
- package/templates/apps/api/src/openapi/spec.ts +0 -2148
- package/templates/apps/api/src/openapi/surface-drift.ts +0 -195
- package/templates/apps/api/src/routes/aeo/__tests__/index.test.ts +0 -175
- package/templates/apps/api/src/routes/aeo/index.ts +0 -107
- package/templates/apps/api/src/routes/auth/__tests__/auth-tokens.functional.test.ts +0 -196
- package/templates/apps/api/src/routes/auth/__tests__/auth-user.functional.test.ts +0 -249
- package/templates/apps/api/src/routes/auth/__tests__/hub-sign-in.test.ts +0 -532
- package/templates/apps/api/src/routes/auth/__tests__/tokens.test.ts +0 -313
- package/templates/apps/api/src/routes/auth/__tests__/transactional-email.test.ts +0 -413
- package/templates/apps/api/src/routes/auth/__tests__/user.test.ts +0 -609
- package/templates/apps/api/src/routes/auth/hub-sign-in.ts +0 -242
- package/templates/apps/api/src/routes/auth/tokens.ts +0 -211
- package/templates/apps/api/src/routes/auth/transactional-email.ts +0 -301
- package/templates/apps/api/src/routes/auth/user.ts +0 -305
- package/templates/apps/api/src/routes/billing/plan-checkout.ts +0 -332
- package/templates/apps/api/src/routes/checkout/__tests__/live-key.test.ts +0 -178
- package/templates/apps/api/src/routes/checkout/__tests__/offerings-authorization.test.ts +0 -1426
- package/templates/apps/api/src/routes/checkout/__tests__/session.test.ts +0 -448
- package/templates/apps/api/src/routes/checkout/__tests__/sessions.test.ts +0 -1742
- package/templates/apps/api/src/routes/checkout/index.ts +0 -34
- package/templates/apps/api/src/routes/checkout/session.ts +0 -171
- package/templates/apps/api/src/routes/checkout/sessions.ts +0 -540
- package/templates/apps/api/src/routes/consent/__tests__/account.test.ts +0 -386
- package/templates/apps/api/src/routes/consent/__tests__/sign-up-rate-limit.test.ts +0 -160
- package/templates/apps/api/src/routes/consent/account.ts +0 -268
- package/templates/apps/api/src/routes/consent/cookie.ts +0 -90
- package/templates/apps/api/src/routes/consent/index.ts +0 -26
- package/templates/apps/api/src/routes/consent/unsubscribe.ts +0 -127
- package/templates/apps/api/src/routes/content/__tests__/get-page.test.ts +0 -853
- package/templates/apps/api/src/routes/content/__tests__/list-pages.test.ts +0 -230
- package/templates/apps/api/src/routes/content/__tests__/list-types.test.ts +0 -44
- package/templates/apps/api/src/routes/content/__tests__/locale.test.ts +0 -118
- package/templates/apps/api/src/routes/content/__tests__/offerings.test.ts +0 -731
- package/templates/apps/api/src/routes/content/__tests__/pricing.test.ts +0 -753
- package/templates/apps/api/src/routes/content/__tests__/rate-limit.test.ts +0 -51
- package/templates/apps/api/src/routes/content/__tests__/search.test.ts +0 -450
- package/templates/apps/api/src/routes/content/__tests__/shown-offerings.test.ts +0 -762
- package/templates/apps/api/src/routes/content/get-page.ts +0 -183
- package/templates/apps/api/src/routes/content/index.ts +0 -49
- package/templates/apps/api/src/routes/content/list-pages.ts +0 -74
- package/templates/apps/api/src/routes/content/list-types.ts +0 -19
- package/templates/apps/api/src/routes/content/offerings.ts +0 -184
- package/templates/apps/api/src/routes/content/pricing.ts +0 -176
- package/templates/apps/api/src/routes/content/rate-limit.ts +0 -22
- package/templates/apps/api/src/routes/content/search.ts +0 -100
- package/templates/apps/api/src/routes/content/shown-offerings.ts +0 -229
- package/templates/apps/api/src/routes/leads/__tests__/capture.test.ts +0 -88
- package/templates/apps/api/src/routes/leads/__tests__/list.test.ts +0 -171
- package/templates/apps/api/src/routes/leads/__tests__/magnet-completion.test.ts +0 -515
- package/templates/apps/api/src/routes/leads/__tests__/spoke.test.ts +0 -392
- package/templates/apps/api/src/routes/leads/__tests__/track.test.ts +0 -165
- package/templates/apps/api/src/routes/leads/index.ts +0 -639
- package/templates/apps/api/src/routes/leads/list.ts +0 -104
- package/templates/apps/api/src/routes/project-listings/__tests__/configured-application.test.ts +0 -626
- package/templates/apps/api/src/routes/project-listings/__tests__/drafts.test.ts +0 -1268
- package/templates/apps/api/src/routes/project-listings/__tests__/founder-identity.test.ts +0 -847
- package/templates/apps/api/src/routes/project-listings/__tests__/me.test.ts +0 -491
- package/templates/apps/api/src/routes/project-listings/__tests__/public.test.ts +0 -476
- package/templates/apps/api/src/routes/project-listings/__tests__/resume-email.test.ts +0 -872
- package/templates/apps/api/src/routes/project-listings/__tests__/site-answers.test.ts +0 -1022
- package/templates/apps/api/src/routes/project-listings/__tests__/site-key.test.ts +0 -484
- package/templates/apps/api/src/routes/project-listings/__tests__/structured-address.test.ts +0 -535
- package/templates/apps/api/src/routes/project-listings/index.ts +0 -164
- package/templates/apps/api/src/routes/project-listings/me.ts +0 -87
- package/templates/apps/api/src/routes/project-listings/patch-copy.ts +0 -224
- package/templates/apps/api/src/routes/project-listings/patch-draft.ts +0 -102
- package/templates/apps/api/src/routes/project-listings/public.ts +0 -98
- package/templates/apps/api/src/routes/project-listings/respond.ts +0 -48
- package/templates/apps/api/src/routes/project-listings/resume-token.ts +0 -27
- package/templates/apps/api/src/routes/project-listings/start.ts +0 -140
- package/templates/apps/api/src/routes/project-listings/submit.ts +0 -130
- package/templates/apps/api/src/routes/project-listings/verify-email.ts +0 -150
- package/templates/apps/api/src/routes/requests/__tests__/confirm.test.ts +0 -686
- package/templates/apps/api/src/routes/requests/confirm.ts +0 -601
- package/templates/apps/api/src/routes/requests/index.ts +0 -54
- package/templates/apps/api/src/routes/test/auth/__tests__/session.test.ts +0 -306
- package/templates/apps/api/src/routes/test/auth/session.ts +0 -143
- package/templates/apps/api/src/routes/webhooks/README.md +0 -398
- package/templates/apps/api/src/routes/webhooks/__tests__/stripe-checkout-consent.test.ts +0 -649
- package/templates/apps/api/src/routes/webhooks/__tests__/stripe-dunning.test.ts +0 -749
- package/templates/apps/api/src/routes/webhooks/__tests__/stripe-flow-checkout.test.ts +0 -449
- package/templates/apps/api/src/routes/webhooks/__tests__/stripe-idempotency.test.ts +0 -264
- package/templates/apps/api/src/routes/webhooks/__tests__/stripe-livemode-live.test.ts +0 -159
- package/templates/apps/api/src/routes/webhooks/__tests__/stripe-livemode.test.ts +0 -158
- package/templates/apps/api/src/routes/webhooks/__tests__/stripe-offerings.test.ts +0 -814
- package/templates/apps/api/src/routes/webhooks/__tests__/stripe-org-billing.test.ts +0 -301
- package/templates/apps/api/src/routes/webhooks/__tests__/stripe-proposal-paid.test.ts +0 -369
- package/templates/apps/api/src/routes/webhooks/__tests__/stripe-rate-limit.test.ts +0 -215
- package/templates/apps/api/src/routes/webhooks/__tests__/stripe-request-paid.test.ts +0 -301
- package/templates/apps/api/src/routes/webhooks/__tests__/stripe-site-filter.test.ts +0 -809
- package/templates/apps/api/src/routes/webhooks/__tests__/stripe.test.ts +0 -1155
- package/templates/apps/api/src/routes/webhooks/index.ts +0 -141
- package/templates/apps/api/src/routes/webhooks/stripe-offerings.ts +0 -384
- package/templates/apps/api/src/routes/webhooks/stripe.ts +0 -2028
- package/templates/apps/api/src/services/__tests__/abandon-email.test.ts +0 -645
- package/templates/apps/api/src/services/__tests__/answer-distributions.test.ts +0 -132
- package/templates/apps/api/src/services/__tests__/audit-log.test.ts +0 -1028
- package/templates/apps/api/src/services/__tests__/checkout-plan.test.ts +0 -313
- package/templates/apps/api/src/services/__tests__/consent-ledger.test.ts +0 -503
- package/templates/apps/api/src/services/__tests__/consent-migration.test.ts +0 -65
- package/templates/apps/api/src/services/__tests__/consent.test.ts +0 -299
- package/templates/apps/api/src/services/__tests__/default-tenant.test.ts +0 -147
- package/templates/apps/api/src/services/__tests__/deliverable-fulfillment.test.ts +0 -877
- package/templates/apps/api/src/services/__tests__/deliverable-resend.test.ts +0 -379
- package/templates/apps/api/src/services/__tests__/dunning-policy.test.ts +0 -368
- package/templates/apps/api/src/services/__tests__/entitlements.test.ts +0 -142
- package/templates/apps/api/src/services/__tests__/hub-sign-in.test.ts +0 -854
- package/templates/apps/api/src/services/__tests__/keyless-workspace-predicate.test.ts +0 -234
- package/templates/apps/api/src/services/__tests__/lead-accept-user.test.ts +0 -251
- package/templates/apps/api/src/services/__tests__/lead-routing.test.ts +0 -2660
- package/templates/apps/api/src/services/__tests__/listing-config.test.ts +0 -166
- package/templates/apps/api/src/services/__tests__/magnet-completion.test.ts +0 -389
- package/templates/apps/api/src/services/__tests__/person.test.ts +0 -1204
- package/templates/apps/api/src/services/__tests__/plan-offerings.test.ts +0 -450
- package/templates/apps/api/src/services/__tests__/project-listings.counts.test.ts +0 -202
- package/templates/apps/api/src/services/__tests__/project-listings.fence.test.ts +0 -151
- package/templates/apps/api/src/services/__tests__/public-site-resolver.test.ts +0 -137
- package/templates/apps/api/src/services/__tests__/request-confirm.test.ts +0 -531
- package/templates/apps/api/src/services/__tests__/revalidation.test.ts +0 -372
- package/templates/apps/api/src/services/__tests__/slack-notify.test.ts +0 -348
- package/templates/apps/api/src/services/__tests__/spoke-resolution.test.ts +0 -660
- package/templates/apps/api/src/services/__tests__/usage-aggregation.test.ts +0 -941
- package/templates/apps/api/src/services/__tests__/usage-credits.test.ts +0 -588
- package/templates/apps/api/src/services/__tests__/verified-email.test.ts +0 -78
- package/templates/apps/api/src/services/abandon-email.ts +0 -336
- package/templates/apps/api/src/services/aeo-score.ts +0 -325
- package/templates/apps/api/src/services/answer-distributions.ts +0 -138
- package/templates/apps/api/src/services/audit-log.ts +0 -961
- package/templates/apps/api/src/services/checkout-buyer.ts +0 -168
- package/templates/apps/api/src/services/consent.ts +0 -834
- package/templates/apps/api/src/services/default-tenant.ts +0 -416
- package/templates/apps/api/src/services/deliverable-fulfillment.ts +0 -750
- package/templates/apps/api/src/services/dunning-policy.ts +0 -294
- package/templates/apps/api/src/services/enrichment-shim.ts +0 -53
- package/templates/apps/api/src/services/entitlements.ts +0 -338
- package/templates/apps/api/src/services/hub-sign-in.ts +0 -472
- package/templates/apps/api/src/services/lead-accept-user.ts +0 -126
- package/templates/apps/api/src/services/lead-promotion.ts +0 -160
- package/templates/apps/api/src/services/lead-routing.ts +0 -1372
- package/templates/apps/api/src/services/leads-inbox.ts +0 -312
- package/templates/apps/api/src/services/listing-config.ts +0 -178
- package/templates/apps/api/src/services/magnet-completion.ts +0 -242
- package/templates/apps/api/src/services/offerings/__tests__/catalog.test.ts +0 -348
- package/templates/apps/api/src/services/offerings/__tests__/checkout-session-record.test.ts +0 -268
- package/templates/apps/api/src/services/offerings/__tests__/connection.test.ts +0 -975
- package/templates/apps/api/src/services/offerings/__tests__/fixtures.ts +0 -416
- package/templates/apps/api/src/services/offerings/__tests__/org-products.test.ts +0 -400
- package/templates/apps/api/src/services/offerings/__tests__/readers.test.ts +0 -685
- package/templates/apps/api/src/services/offerings/__tests__/source.test.ts +0 -231
- package/templates/apps/api/src/services/offerings/catalog.ts +0 -318
- package/templates/apps/api/src/services/offerings/checkout-authorization.ts +0 -403
- package/templates/apps/api/src/services/offerings/checkout-session-record.ts +0 -192
- package/templates/apps/api/src/services/offerings/connection.ts +0 -1083
- package/templates/apps/api/src/services/offerings/index.ts +0 -614
- package/templates/apps/api/src/services/offerings/source.ts +0 -140
- package/templates/apps/api/src/services/offerings/store.ts +0 -150
- package/templates/apps/api/src/services/owner-workspaces.ts +0 -132
- package/templates/apps/api/src/services/person.ts +0 -1211
- package/templates/apps/api/src/services/plan-offerings.ts +0 -125
- package/templates/apps/api/src/services/project-listing-resume-email.ts +0 -326
- package/templates/apps/api/src/services/project-listings.ts +0 -2085
- package/templates/apps/api/src/services/public-site-resolver.ts +0 -396
- package/templates/apps/api/src/services/request-confirm.ts +0 -698
- package/templates/apps/api/src/services/revalidation.ts +0 -235
- package/templates/apps/api/src/services/slack-notify.ts +0 -291
- package/templates/apps/api/src/services/usage-aggregation.ts +0 -516
- package/templates/apps/api/src/services/usage-credits.ts +0 -340
- package/templates/apps/api/src/services/verified-email.ts +0 -71
- package/templates/apps/mcp/__tests__/abuse/daily-cap.test.ts +0 -52
- package/templates/apps/mcp/__tests__/abuse/email-validator.test.ts +0 -46
- package/templates/apps/mcp/__tests__/abuse/guard.test.ts +0 -198
- package/templates/apps/mcp/__tests__/abuse/honeypot.test.ts +0 -36
- package/templates/apps/mcp/__tests__/abuse/user-agent-deny.test.ts +0 -54
- package/templates/apps/mcp/__tests__/aeo-cli-parity.test.ts +0 -116
- package/templates/apps/mcp/__tests__/audit-single-page.test.ts +0 -299
- package/templates/apps/mcp/__tests__/boot.test.ts +0 -280
- package/templates/apps/mcp/__tests__/catalog-drift.test.ts +0 -359
- package/templates/apps/mcp/__tests__/config/modules.test.ts +0 -78
- package/templates/apps/mcp/__tests__/get_business_hours.test.ts +0 -82
- package/templates/apps/mcp/__tests__/get_faq.test.ts +0 -80
- package/templates/apps/mcp/__tests__/get_locations.test.ts +0 -65
- package/templates/apps/mcp/__tests__/get_offerings.test.ts +0 -557
- package/templates/apps/mcp/__tests__/get_pricing.test.ts +0 -524
- package/templates/apps/mcp/__tests__/get_site_info.test.ts +0 -81
- package/templates/apps/mcp/__tests__/http-transport.test.ts +0 -1232
- package/templates/apps/mcp/__tests__/index.test.ts +0 -195
- package/templates/apps/mcp/__tests__/lib/audit-single-page-readiness-scan.test.ts +0 -191
- package/templates/apps/mcp/__tests__/lib/commerce-claim.test.ts +0 -531
- package/templates/apps/mcp/__tests__/lib/content-adapter-parity.test.ts +0 -70
- package/templates/apps/mcp/__tests__/lib/content-adapter.test.ts +0 -162
- package/templates/apps/mcp/__tests__/lib/content-root.test.ts +0 -93
- package/templates/apps/mcp/__tests__/lib/errors.test.ts +0 -75
- package/templates/apps/mcp/__tests__/lib/fail-closed-tools.test.ts +0 -180
- package/templates/apps/mcp/__tests__/lib/public-workspace.test.ts +0 -124
- package/templates/apps/mcp/__tests__/list_pages.test.ts +0 -268
- package/templates/apps/mcp/__tests__/locale.test.ts +0 -120
- package/templates/apps/mcp/__tests__/module-exclusion.test.ts +0 -175
- package/templates/apps/mcp/__tests__/purchase-disabled.test.ts +0 -101
- package/templates/apps/mcp/__tests__/rate-limit-write.test.ts +0 -189
- package/templates/apps/mcp/__tests__/read_content.test.ts +0 -511
- package/templates/apps/mcp/__tests__/request_callback.test.ts +0 -160
- package/templates/apps/mcp/__tests__/search_content.test.ts +0 -271
- package/templates/apps/mcp/__tests__/server.test.ts +0 -388
- package/templates/apps/mcp/__tests__/start_purchase.test.ts +0 -448
- package/templates/apps/mcp/__tests__/submit_lead.test.ts +0 -222
- package/templates/apps/mcp/__tests__/subscribe_newsletter.test.ts +0 -152
- package/templates/apps/mcp/__tests__/tools/create_project.test.ts +0 -243
- package/templates/apps/mcp/__tests__/tools/purchase.test.ts +0 -451
- package/templates/apps/mcp/src/abuse/daily-cap.ts +0 -47
- package/templates/apps/mcp/src/abuse/email-validator.ts +0 -25
- package/templates/apps/mcp/src/abuse/honeypot.ts +0 -21
- package/templates/apps/mcp/src/abuse/index.ts +0 -349
- package/templates/apps/mcp/src/abuse/user-agent-deny.ts +0 -58
- package/templates/apps/mcp/src/boot.ts +0 -167
- package/templates/apps/mcp/src/config/modules.ts +0 -43
- package/templates/apps/mcp/src/http-transport.ts +0 -564
- package/templates/apps/mcp/src/lib/audit-single-page.ts +0 -308
- package/templates/apps/mcp/src/lib/commerce-claim.ts +0 -263
- package/templates/apps/mcp/src/lib/content-adapter.ts +0 -116
- package/templates/apps/mcp/src/lib/empty-content-adapter.ts +0 -140
- package/templates/apps/mcp/src/lib/errors.ts +0 -61
- package/templates/apps/mcp/src/lib/license-key-store.ts +0 -45
- package/templates/apps/mcp/src/lib/locales.ts +0 -171
- package/templates/apps/mcp/src/lib/prisma.ts +0 -39
- package/templates/apps/mcp/src/lib/public-workspace.ts +0 -133
- package/templates/apps/mcp/src/lib/resolve-locale.ts +0 -30
- package/templates/apps/mcp/src/lib/shown-offerings.ts +0 -105
- package/templates/apps/mcp/src/lib/site-config.ts +0 -53
- package/templates/apps/mcp/src/lib/stripe-tax-signal.ts +0 -59
- package/templates/apps/mcp/src/request-context.ts +0 -52
- package/templates/apps/mcp/src/server.ts +0 -343
- package/templates/apps/mcp/src/serverless-app.ts +0 -88
- package/templates/apps/mcp/src/tools/audit.ts +0 -127
- package/templates/apps/mcp/src/tools/capture_lead.ts +0 -66
- package/templates/apps/mcp/src/tools/create_project.ts +0 -134
- package/templates/apps/mcp/src/tools/get_business_hours.ts +0 -68
- package/templates/apps/mcp/src/tools/get_faq.ts +0 -71
- package/templates/apps/mcp/src/tools/get_locations.ts +0 -88
- package/templates/apps/mcp/src/tools/get_offerings.ts +0 -96
- package/templates/apps/mcp/src/tools/get_pricing.ts +0 -94
- package/templates/apps/mcp/src/tools/get_site_info.ts +0 -86
- package/templates/apps/mcp/src/tools/index.ts +0 -138
- package/templates/apps/mcp/src/tools/list_pages.ts +0 -68
- package/templates/apps/mcp/src/tools/person_notes.ts +0 -25
- package/templates/apps/mcp/src/tools/proposals.ts +0 -27
- package/templates/apps/mcp/src/tools/purchase.ts +0 -205
- package/templates/apps/mcp/src/tools/read_content.ts +0 -81
- package/templates/apps/mcp/src/tools/request_callback.ts +0 -52
- package/templates/apps/mcp/src/tools/search_content.ts +0 -63
- package/templates/apps/mcp/src/tools/subscribe_newsletter.ts +0 -54
- package/templates/apps/mcp/src/workspace-server.ts +0 -224
- package/templates/database/CHANGELOG.md +0 -981
- package/templates/database/LICENSE +0 -202
- package/templates/database/NOTICE +0 -2
- package/templates/database/README.md +0 -243
- package/templates/database/__tests__/agents.db.test.ts +0 -320
- package/templates/database/__tests__/appointment.db.test.ts +0 -106
- package/templates/database/__tests__/artifact-content-store.db.test.ts +0 -316
- package/templates/database/__tests__/composite-fence.db.test.ts +0 -206
- package/templates/database/__tests__/consent-ledger.db.test.ts +0 -345
- package/templates/database/__tests__/consent-source-checkout-migration.test.ts +0 -79
- package/templates/database/__tests__/fence-fan-out.db.test.ts +0 -715
- package/templates/database/__tests__/fixtures/appointment-create-probe.ts +0 -79
- package/templates/database/__tests__/fixtures/person-backfill.json +0 -264
- package/templates/database/__tests__/fixtures/person-contact-backfill.json +0 -182
- package/templates/database/__tests__/fixtures/project-listing-consent-probe.ts +0 -100
- package/templates/database/__tests__/flow-completion-migration.test.ts +0 -115
- package/templates/database/__tests__/flow-completion.db.test.ts +0 -136
- package/templates/database/__tests__/flow-workspace-key.db.test.ts +0 -263
- package/templates/database/__tests__/flows-listing-diagnostic.test.ts +0 -392
- package/templates/database/__tests__/flows-presets.test.ts +0 -173
- package/templates/database/__tests__/in-page-magnets-migration.test.ts +0 -161
- package/templates/database/__tests__/lead-idempotency-key.db.test.ts +0 -92
- package/templates/database/__tests__/member-area.db.test.ts +0 -257
- package/templates/database/__tests__/member-contract-migration.test.ts +0 -85
- package/templates/database/__tests__/member-contract.db.test.ts +0 -413
- package/templates/database/__tests__/offerings-checkout-session.db.test.ts +0 -270
- package/templates/database/__tests__/offerings-migration.test.ts +0 -197
- package/templates/database/__tests__/offerings-shown-price-ids-migration.test.ts +0 -86
- package/templates/database/__tests__/offerings.db.test.ts +0 -303
- package/templates/database/__tests__/outbound-message-action.db.test.ts +0 -80
- package/templates/database/__tests__/person-contact.db.test.ts +0 -563
- package/templates/database/__tests__/person-notes.db.test.ts +0 -249
- package/templates/database/__tests__/person.db.test.ts +0 -586
- package/templates/database/__tests__/piece-kind-migration.test.ts +0 -67
- package/templates/database/__tests__/piece-kind.db.test.ts +0 -208
- package/templates/database/__tests__/prefixed-ids.db.test.ts +0 -222
- package/templates/database/__tests__/project-listing-consent-at.db.test.ts +0 -111
- package/templates/database/__tests__/seed.test.ts +0 -272
- package/templates/database/__tests__/spoke-registry.db.test.ts +0 -191
- package/templates/database/__tests__/tenancy.test.ts +0 -141
- package/templates/database/__tests__/trial-magnet-migration.test.ts +0 -186
- package/templates/database/__tests__/user-cascade.test.ts +0 -140
- package/templates/database/_gitignore +0 -8
- package/templates/database/auth/.gitkeep +0 -0
- package/templates/database/auth/schema.prisma +0 -641
- package/templates/database/config/.gitkeep +0 -0
- package/templates/database/config/schema.prisma +0 -441
- package/templates/database/content/.gitkeep +0 -0
- package/templates/database/content/schema.prisma +0 -339
- package/templates/database/eslint.config.mjs +0 -69
- package/templates/database/flows/listing-diagnostic.ts +0 -182
- package/templates/database/flows/presets.ts +0 -315
- package/templates/database/inbox/.gitkeep +0 -0
- package/templates/database/inbox/README.md +0 -3
- package/templates/database/inbox/__tests__/schema.test.ts +0 -44
- package/templates/database/inbox/schema.prisma +0 -1447
- package/templates/database/jest.config.cjs +0 -36
- package/templates/database/migrations/20260508000000_add_inbox_namespace/migration.sql +0 -328
- package/templates/database/migrations/20260513000000_better_auth_migration/migration.sql +0 -100
- package/templates/database/migrations/20260515000000_add_user_billing_fields/migration.sql +0 -28
- package/templates/database/migrations/20260516000000_add_user_tier_care_plan_seat/migration.sql +0 -25
- package/templates/database/migrations/20260518000000_add_telemetry_records/migration.sql +0 -42
- package/templates/database/migrations/20260525000000_theme_wiring/migration.sql +0 -67
- package/templates/database/migrations/20260710000000_retire_commercial_tier/migration.sql +0 -21
- package/templates/database/migrations/20260712215647_add_multi_tenant_tenancy/migration.sql +0 -201
- package/templates/database/migrations/20260713143320_reanchor_site_config_to_workspace/migration.sql +0 -67
- package/templates/database/migrations/20260713174000_add_audit_logs/migration.sql +0 -46
- package/templates/database/migrations/20260713190000_drop_telemetry_records/migration.sql +0 -25
- package/templates/database/migrations/20260713192000_add_uuidv7_function/migration.sql +0 -49
- package/templates/database/migrations/20260713192429_prefixed_uuid_entity_ids/migration.sql +0 -197
- package/templates/database/migrations/20260713200000_add_org_billing/migration.sql +0 -32
- package/templates/database/migrations/20260714000000_add_lead_promotion_fields/migration.sql +0 -22
- package/templates/database/migrations/20260714010000_add_usage_billing_content_models/migration.sql +0 -151
- package/templates/database/migrations/20260714020000_add_usage_billing_auth_config_models/migration.sql +0 -223
- package/templates/database/migrations/20260714030000_credit_balance_non_negative/migration.sql +0 -22
- package/templates/database/migrations/20260714030000_widen_usage_billing_report_aggregates/migration.sql +0 -32
- package/templates/database/migrations/20260810233516_add_flow_engine_models/migration.sql +0 -40
- package/templates/database/migrations/20260811020000_add_flow_session_abandon_email_columns/migration.sql +0 -4
- package/templates/database/migrations/20260811030000_add_flow_session_abandon_email_index/migration.sql +0 -2
- package/templates/database/migrations/20260811040000_add_flow_session_segment/migration.sql +0 -2
- package/templates/database/migrations/20260811050000_add_deliverable_models/migration.sql +0 -29
- package/templates/database/migrations/20260812000000_add_deliverable_grant_send_columns/migration.sql +0 -6
- package/templates/database/migrations/20260902222948_add_waitlist_experiment_models/migration.sql +0 -39
- package/templates/database/migrations/20260902224500_add_waitlist_id_format_checks/migration.sql +0 -24
- package/templates/database/migrations/20260903004112_add_flow_session_flags_aeo_score/migration.sql +0 -3
- package/templates/database/migrations/20260903010000_add_playbook_instance/migration.sql +0 -33
- package/templates/database/migrations/20260904000000_add_waitlist_followup_send/migration.sql +0 -30
- package/templates/database/migrations/20260905230000_add_flow_checkout/migration.sql +0 -47
- package/templates/database/migrations/20260906000000_add_flow_checkout_idempotency/migration.sql +0 -16
- package/templates/database/migrations/20260907120000_add_project_listing/migration.sql +0 -47
- package/templates/database/migrations/20260907130000_add_project_listing_slack_columns/migration.sql +0 -10
- package/templates/database/migrations/20260907180000_add_listing_csv_send/migration.sql +0 -26
- package/templates/database/migrations/20260909120000_project_listings_platform/migration.sql +0 -90
- package/templates/database/migrations/20260909180000_listing_draft_and_fields/migration.sql +0 -174
- package/templates/database/migrations/20260910120000_listing_public_site_key/migration.sql +0 -14
- package/templates/database/migrations/20260911120000_listing_copy_edit_audit/migration.sql +0 -25
- package/templates/database/migrations/20260911140000_listing_structured_address/migration.sql +0 -32
- package/templates/database/migrations/20260911180000_consent_grants/migration.sql +0 -71
- package/templates/database/migrations/20260911200000_listing_site_answers/migration.sql +0 -30
- package/templates/database/migrations/20260912120000_listing_owner_link/migration.sql +0 -49
- package/templates/database/migrations/20260914120000_listing_founder_identity/migration.sql +0 -123
- package/templates/database/migrations/20260915120000_project_listing_solution/migration.sql +0 -15
- package/templates/database/migrations/20260916120000_artifact_content_store/migration.sql +0 -158
- package/templates/database/migrations/20260917120000_callback_request_confirm/migration.sql +0 -40
- package/templates/database/migrations/20260918120000_add_appointment/migration.sql +0 -67
- package/templates/database/migrations/20260918120000_asset_metadata_columns/migration.sql +0 -70
- package/templates/database/migrations/20260919120000_flow_workspace_key/migration.sql +0 -181
- package/templates/database/migrations/20260919130000_flow_definition_admin_columns/migration.sql +0 -172
- package/templates/database/migrations/20260919130000_workspace_meetings/migration.sql +0 -41
- package/templates/database/migrations/20260919140000_inbox_workspace_key/migration.sql +0 -185
- package/templates/database/migrations/20260920120000_lead_handled_at/migration.sql +0 -70
- package/templates/database/migrations/20260920130000_lead_workspace_source_index/migration.sql +0 -57
- package/templates/database/migrations/20260921120000_deliverable_grant_workspace_key/migration.sql +0 -68
- package/templates/database/migrations/20260922120000_tenancy_fence/migration.sql +0 -1067
- package/templates/database/migrations/20260923120000_listing_capturing_magnet/migration.sql +0 -210
- package/templates/database/migrations/20261003120000_spoke_registry/migration.sql +0 -80
- package/templates/database/migrations/20261003130000_scheduling_connection/migration.sql +0 -49
- package/templates/database/migrations/20261005120000_agents/migration.sql +0 -84
- package/templates/database/migrations/20261008120000_user_last_workspace/migration.sql +0 -35
- package/templates/database/migrations/20261008130000_lead_idempotency_key/migration.sql +0 -20
- package/templates/database/migrations/20261009120000_agent_grants/migration.sql +0 -33
- package/templates/database/migrations/20261010120000_person/migration.sql +0 -106
- package/templates/database/migrations/20261010121000_person_backfill/migration.sql +0 -132
- package/templates/database/migrations/20261010130000_agent_grants_people_read/migration.sql +0 -20
- package/templates/database/migrations/20261011120000_member_area/migration.sql +0 -158
- package/templates/database/migrations/20261011130000_agent_grants_member_pieces_manage/migration.sql +0 -21
- package/templates/database/migrations/20261012120000_member_contract/migration.sql +0 -192
- package/templates/database/migrations/20261013120000_lead_spoke_checkout/migration.sql +0 -20
- package/templates/database/migrations/20261014120000_consent_ledger/migration.sql +0 -122
- package/templates/database/migrations/20261014120000_person_contact/migration.sql +0 -231
- package/templates/database/migrations/20261015120000_person_notes/migration.sql +0 -77
- package/templates/database/migrations/20261015120000_rate_limit_counters/migration.sql +0 -43
- package/templates/database/migrations/20261016120000_piece_kind/migration.sql +0 -95
- package/templates/database/migrations/20261017120000_outbound_message_action/migration.sql +0 -30
- package/templates/database/migrations/20261018120000_flow_completion/migration.sql +0 -52
- package/templates/database/migrations/20261019120000_consent_source_checkout/migration.sql +0 -27
- package/templates/database/migrations/20261020120000_offerings_data_model/migration.sql +0 -146
- package/templates/database/migrations/20261021120000_offerings_checkout_session/migration.sql +0 -77
- package/templates/database/migrations/20261022120000_in_page_magnets/migration.sql +0 -45
- package/templates/database/migrations/20261023120000_offerings_shown_price_ids/migration.sql +0 -47
- package/templates/database/migrations/20261024120000_organization_plan_checkout_session/migration.sql +0 -16
- package/templates/database/migrations/20261025120000_trial_magnet/migration.sql +0 -28
- package/templates/database/migrations/20261026120000_trial_magnet_proof_line/migration.sql +0 -23
- package/templates/database/migrations/migration_lock.toml +0 -3
- package/templates/database/ops/.gitkeep +0 -0
- package/templates/database/ops/schema.prisma +0 -43
- package/templates/database/package.json +0 -89
- package/templates/database/schema.prisma +0 -71
- package/templates/database/scripts/db-generate-locked.sh +0 -80
- package/templates/database/scripts/person-backfill.sql +0 -132
- package/templates/database/tenancy.ts +0 -183
- package/templates/database/tsconfig.build.json +0 -16
- package/templates/database/tsconfig.flows.json +0 -15
- package/templates/database/tsconfig.json +0 -16
- package/templates/database/tsconfig.tenancy.json +0 -14
package/dist/paid-sections.d.ts
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
export declare const PAID_SECTIONS_PATH = "apps/web/lib/paid-sections.generated.ts";
|
|
3
3
|
/** Scaffold-relative path of the generated module-presence flags (#8843 D10). */
|
|
4
4
|
export declare const MODULE_FLAGS_PATH = "apps/web/lib/modules.generated.ts";
|
|
5
|
+
/** Scaffold-relative path of the generated paid MCP tool registry (#9460 DD6). */
|
|
6
|
+
export declare const PAID_MCP_TOOLS_PATH = "apps/mcp/src/lib/paid-tools.generated.ts";
|
|
5
7
|
export interface PaidSectionRow {
|
|
6
8
|
module: string;
|
|
7
9
|
package: string;
|
|
@@ -33,9 +35,31 @@ export declare function renderModuleFlags(flags: {
|
|
|
33
35
|
* `undefined` (writing nothing) for a scaffold with no web app.
|
|
34
36
|
*/
|
|
35
37
|
export declare function writeModuleFlags(targetDir: string): "added" | "updated" | "unchanged" | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* The paid MCP tool packages, one row each (#9460 DD6): every slice's
|
|
40
|
+
* `paidMcpToolPackages` in `RECOGNIZED_MODULES` order, then first
|
|
41
|
+
* appearance, so a package two modules deliver is one row.
|
|
42
|
+
*/
|
|
43
|
+
export declare function paidMcpToolRows(): string[];
|
|
44
|
+
/**
|
|
45
|
+
* Render the MCP registry: one `() => import("<package>")` per carried
|
|
46
|
+
* package, `[]` when none is carried. Line 1 is `// oss: false` exactly when
|
|
47
|
+
* a row is present — #7536's rule, so the public strip drops the file.
|
|
48
|
+
*/
|
|
49
|
+
export declare function renderPaidMcpTools(present: ReadonlySet<string>): string;
|
|
50
|
+
/**
|
|
51
|
+
* Write the MCP registry into a scaffold from its own `apps/mcp/package.json`
|
|
52
|
+
* `dependencies` (#9460 DD6), creating `apps/mcp/src/lib/` if need be.
|
|
53
|
+
* Answers whether the file was `added`, `updated` (changed bytes) or
|
|
54
|
+
* `unchanged`, or `undefined` (writing nothing) when that package.json is
|
|
55
|
+
* absent — a `--without-mcp` spoke — the `writeModuleFlags` shape, so
|
|
56
|
+
* `create-ailk update` reports it the same way (#9567).
|
|
57
|
+
*/
|
|
58
|
+
export declare function writePaidMcpTools(targetDir: string): "added" | "updated" | "unchanged" | undefined;
|
|
36
59
|
/**
|
|
37
60
|
* Write the registry into a scaffold, deriving presence from the scaffold's
|
|
38
|
-
* own `apps/web/package.json`, and the module-presence flags beside it
|
|
61
|
+
* own `apps/web/package.json`, and the module-presence flags beside it,
|
|
62
|
+
* then the MCP registry from `apps/mcp/package.json` (#9460 DD6).
|
|
39
63
|
* Returns `false` (writing nothing) when that file or `apps/web/lib/` is
|
|
40
64
|
* absent — a scaffold with no web app.
|
|
41
65
|
*/
|
package/dist/paid-sections.js
CHANGED
|
@@ -23,14 +23,16 @@
|
|
|
23
23
|
* file, importing nothing, because the registry's `import()`s would pull UI
|
|
24
24
|
* packages into any edge code that reads the flag.
|
|
25
25
|
*/
|
|
26
|
-
import { existsSync, readFileSync, writeFileSync } from "node:fs";
|
|
27
|
-
import { join } from "node:path";
|
|
26
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
27
|
+
import { dirname, join } from "node:path";
|
|
28
28
|
import { MODULE_SLICES } from "./module-architecture.js";
|
|
29
29
|
import { RECOGNIZED_MODULES } from "./parse-args.js";
|
|
30
30
|
/** Scaffold-relative path of the generated registry. */
|
|
31
31
|
export const PAID_SECTIONS_PATH = "apps/web/lib/paid-sections.generated.ts";
|
|
32
32
|
/** Scaffold-relative path of the generated module-presence flags (#8843 D10). */
|
|
33
33
|
export const MODULE_FLAGS_PATH = "apps/web/lib/modules.generated.ts";
|
|
34
|
+
/** Scaffold-relative path of the generated paid MCP tool registry (#9460 DD6). */
|
|
35
|
+
export const PAID_MCP_TOOLS_PATH = "apps/mcp/src/lib/paid-tools.generated.ts";
|
|
34
36
|
/** The dependency whose presence means the scheduling module's pages exist. */
|
|
35
37
|
const SCHEDULING_PAGES_PACKAGE = "@working-theory/ui-scheduling";
|
|
36
38
|
function pascalCase(shortName) {
|
|
@@ -162,9 +164,91 @@ export function writeModuleFlags(targetDir) {
|
|
|
162
164
|
writeFileSync(path, next);
|
|
163
165
|
return before === undefined ? "added" : "updated";
|
|
164
166
|
}
|
|
167
|
+
/**
|
|
168
|
+
* The paid MCP tool packages, one row each (#9460 DD6): every slice's
|
|
169
|
+
* `paidMcpToolPackages` in `RECOGNIZED_MODULES` order, then first
|
|
170
|
+
* appearance, so a package two modules deliver is one row.
|
|
171
|
+
*/
|
|
172
|
+
export function paidMcpToolRows() {
|
|
173
|
+
const rows = [];
|
|
174
|
+
for (const name of RECOGNIZED_MODULES) {
|
|
175
|
+
for (const pkg of MODULE_SLICES[name].paidMcpToolPackages ?? []) {
|
|
176
|
+
if (!rows.includes(pkg))
|
|
177
|
+
rows.push(pkg);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
return rows;
|
|
181
|
+
}
|
|
182
|
+
const PAID_MCP_TOOLS_HEADER = `// paid-tools.generated.ts — the paid MCP tool packages this site carries.
|
|
183
|
+
//
|
|
184
|
+
// GENERATED by create-ailk from MODULE_SLICES (\`paidMcpToolPackages\`) and
|
|
185
|
+
// this app's package.json dependencies (#9460). Do not edit: every scaffold
|
|
186
|
+
// and \`create-ailk add-module\` rewrites it. A carried package is a bundled
|
|
187
|
+
// dynamic import the server resolves its paid tools from at call time; a
|
|
188
|
+
// site that carries none exports an empty list.
|
|
189
|
+
`;
|
|
190
|
+
/**
|
|
191
|
+
* Render the MCP registry: one `() => import("<package>")` per carried
|
|
192
|
+
* package, `[]` when none is carried. Line 1 is `// oss: false` exactly when
|
|
193
|
+
* a row is present — #7536's rule, so the public strip drops the file.
|
|
194
|
+
*/
|
|
195
|
+
export function renderPaidMcpTools(present) {
|
|
196
|
+
// Spelled through a constant, not a `from "…"` literal: create-ailk's own
|
|
197
|
+
// dist must carry no `@working-theory/*` import text (#8412), while the
|
|
198
|
+
// scaffold's generated registry still imports the type (#9460 DD6).
|
|
199
|
+
const MCP_SERVER_PACKAGE = "@working-theory/mcp-server";
|
|
200
|
+
const rows = paidMcpToolRows().filter((pkg) => present.has(pkg));
|
|
201
|
+
const lines = [];
|
|
202
|
+
if (rows.length > 0)
|
|
203
|
+
lines.push("// oss: false");
|
|
204
|
+
lines.push(PAID_MCP_TOOLS_HEADER.trimEnd());
|
|
205
|
+
lines.push(`import type { McpToolPackLoader } from ${JSON.stringify(MCP_SERVER_PACKAGE)};`);
|
|
206
|
+
lines.push("");
|
|
207
|
+
if (rows.length === 0) {
|
|
208
|
+
lines.push("export const PAID_TOOL_PACKS: readonly McpToolPackLoader[] = [];");
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
lines.push("export const PAID_TOOL_PACKS: readonly McpToolPackLoader[] = [");
|
|
212
|
+
for (const pkg of rows)
|
|
213
|
+
lines.push(` () => import("${pkg}"),`);
|
|
214
|
+
lines.push("];");
|
|
215
|
+
}
|
|
216
|
+
return `${lines.join("\n")}\n`;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Write the MCP registry into a scaffold from its own `apps/mcp/package.json`
|
|
220
|
+
* `dependencies` (#9460 DD6), creating `apps/mcp/src/lib/` if need be.
|
|
221
|
+
* Answers whether the file was `added`, `updated` (changed bytes) or
|
|
222
|
+
* `unchanged`, or `undefined` (writing nothing) when that package.json is
|
|
223
|
+
* absent — a `--without-mcp` spoke — the `writeModuleFlags` shape, so
|
|
224
|
+
* `create-ailk update` reports it the same way (#9567).
|
|
225
|
+
*/
|
|
226
|
+
export function writePaidMcpTools(targetDir) {
|
|
227
|
+
const pkgPath = join(targetDir, "apps/mcp/package.json");
|
|
228
|
+
if (!existsSync(pkgPath))
|
|
229
|
+
return undefined;
|
|
230
|
+
let pkg;
|
|
231
|
+
try {
|
|
232
|
+
pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
|
|
233
|
+
}
|
|
234
|
+
catch (err) {
|
|
235
|
+
throw new Error(`cannot read ${pkgPath} to write the paid MCP tool registry: ${err.message}`, { cause: err });
|
|
236
|
+
}
|
|
237
|
+
const deps = pkg.dependencies ?? {};
|
|
238
|
+
const present = new Set(paidMcpToolRows().filter((name) => Object.hasOwn(deps, name)));
|
|
239
|
+
const path = join(targetDir, PAID_MCP_TOOLS_PATH);
|
|
240
|
+
const before = existsSync(path) ? readFileSync(path, "utf8") : undefined;
|
|
241
|
+
const next = renderPaidMcpTools(present);
|
|
242
|
+
if (before === next)
|
|
243
|
+
return "unchanged";
|
|
244
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
245
|
+
writeFileSync(path, next);
|
|
246
|
+
return before === undefined ? "added" : "updated";
|
|
247
|
+
}
|
|
165
248
|
/**
|
|
166
249
|
* Write the registry into a scaffold, deriving presence from the scaffold's
|
|
167
|
-
* own `apps/web/package.json`, and the module-presence flags beside it
|
|
250
|
+
* own `apps/web/package.json`, and the module-presence flags beside it,
|
|
251
|
+
* then the MCP registry from `apps/mcp/package.json` (#9460 DD6).
|
|
168
252
|
* Returns `false` (writing nothing) when that file or `apps/web/lib/` is
|
|
169
253
|
* absent — a scaffold with no web app.
|
|
170
254
|
*/
|
|
@@ -177,5 +261,6 @@ export function writePaidSections(targetDir) {
|
|
|
177
261
|
.filter((name) => Object.hasOwn(deps, name)));
|
|
178
262
|
writeFileSync(join(targetDir, PAID_SECTIONS_PATH), renderPaidSections(present));
|
|
179
263
|
writeModuleFlags(targetDir);
|
|
264
|
+
writePaidMcpTools(targetDir);
|
|
180
265
|
return true;
|
|
181
266
|
}
|
package/dist/surfaces.js
CHANGED
|
@@ -713,7 +713,7 @@ export const ROUTE_SINCE = {
|
|
|
713
713
|
// is one too. Whether it shows a ROW is a separate question with two
|
|
714
714
|
// deployment preconditions (a resolvable workspace, and a `siteId` that
|
|
715
715
|
// equals a workspace id); both fail empty, never wide. See
|
|
716
|
-
// `
|
|
716
|
+
// `packages/api/src/services/leads-inbox.ts` § "What it takes for this to
|
|
717
717
|
// return anything".
|
|
718
718
|
"(authed)/leads": "0.24.0",
|
|
719
719
|
// #5371 — the workspace module's three settings routes. Genuinely new route
|
|
@@ -1065,7 +1065,15 @@ export const ROUTE_DEPENDENCIES = {
|
|
|
1065
1065
|
"meet/[slug]": ["apps/web/lib/meetings.tsx"],
|
|
1066
1066
|
private: ["apps/web/lib/meetings.tsx", `${ROUTE_ROOT}/meet/meeting-index.tsx`],
|
|
1067
1067
|
// #8927 D8 — /pricing maps the Offerings shown set through the mapper.
|
|
1068
|
-
|
|
1068
|
+
// #9480 — and reads its browser-facing API origin through the topology seam
|
|
1069
|
+
// (#7874 D12), so a spoke with /pricing reads no refused name. Every
|
|
1070
|
+
// scaffold since #7874 already carries its own render of the seam, and a
|
|
1071
|
+
// dependency copy never overwrites, so this entry admits the import; it
|
|
1072
|
+
// never replaces a spoke's render with the template's hub one.
|
|
1073
|
+
pricing: [
|
|
1074
|
+
"apps/web/lib/offerings-pricing.ts",
|
|
1075
|
+
"apps/web/lib/api-origin.generated.ts",
|
|
1076
|
+
],
|
|
1069
1077
|
};
|
|
1070
1078
|
/**
|
|
1071
1079
|
* i18n message namespaces (dot-path into `apps/web/messages/<locale>.json`) a
|
|
@@ -3,17 +3,27 @@ export declare const TEMPLATE_RECORD_PATH = ".ailk-template-files.json";
|
|
|
3
3
|
/**
|
|
4
4
|
* The app paths a generator rewrites after `copyTemplate` lands its copy
|
|
5
5
|
* (§1): the nav, the site chrome, the site fonts, the paid-sections
|
|
6
|
-
* registry and its module-presence flags (#8843 D10), the
|
|
6
|
+
* registry and its module-presence flags (#8843 D10), the paid MCP tool
|
|
7
|
+
* registry (#9460 DD6; `update` rewrites it every run, #9567), the four spoke seams, and a commerce spoke's checkout config,
|
|
7
8
|
* which the checkout writer stamps and the site owns from then on (#8748
|
|
8
9
|
* D2). Composed from each writer's own exported path constant, so a renamed
|
|
9
10
|
* constant carries its path along here too (#8522 D2).
|
|
10
11
|
*/
|
|
11
12
|
export declare const REGENERATED_APP_PATHS: readonly string[];
|
|
13
|
+
/**
|
|
14
|
+
* A hub's thin `database/` (#9569 DD1/DD8): the Prisma config that points at
|
|
15
|
+
* the installed `@working-theory/database`, and the two seeds the package
|
|
16
|
+
* does not publish. Recorded and carried by `update` like an app file; the
|
|
17
|
+
* module data files beside them (`database/flows/`, `database/waitlist/`)
|
|
18
|
+
* are bundle output, never recorded.
|
|
19
|
+
*/
|
|
20
|
+
export declare const DATABASE_BOOT_FILES: readonly string[];
|
|
12
21
|
/**
|
|
13
22
|
* Whether a destination path (`/`-separated, as `templateDestination`
|
|
14
|
-
* returns it) is one `update` ever records or touches (#8522 D2):
|
|
15
|
-
*
|
|
16
|
-
* `.claude` segment, and not a
|
|
23
|
+
* returns it) is one `update` ever records or touches (#8522 D2): one of
|
|
24
|
+
* the three `DATABASE_BOOT_FILES`, or under one of the three app trees, not
|
|
25
|
+
* a `package.json`, not an `.env*` file, no `.claude` segment, and not a
|
|
26
|
+
* path a generator rewrites after the copy.
|
|
17
27
|
*/
|
|
18
28
|
export declare function isRecordable(destRel: string): boolean;
|
|
19
29
|
/** The hex sha256 digest of `bytes` — the one hash every record row uses. */
|
package/dist/template-record.js
CHANGED
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
import { createHash } from "node:crypto";
|
|
19
19
|
import { existsSync, readFileSync } from "node:fs";
|
|
20
20
|
import { join } from "node:path";
|
|
21
|
-
import { MODULE_FLAGS_PATH, PAID_SECTIONS_PATH } from "./paid-sections.js";
|
|
21
|
+
import { MODULE_FLAGS_PATH, PAID_MCP_TOOLS_PATH, PAID_SECTIONS_PATH } from "./paid-sections.js";
|
|
22
22
|
import { SITE_CHROME_PATH } from "./site-chrome.js";
|
|
23
23
|
import { SITE_FONTS_PATH } from "./site-fonts.js";
|
|
24
24
|
import { SPOKE_CHECKOUT_CONFIG_PATH } from "./spoke-checkout.js";
|
|
@@ -29,7 +29,8 @@ export const TEMPLATE_RECORD_PATH = ".ailk-template-files.json";
|
|
|
29
29
|
/**
|
|
30
30
|
* The app paths a generator rewrites after `copyTemplate` lands its copy
|
|
31
31
|
* (§1): the nav, the site chrome, the site fonts, the paid-sections
|
|
32
|
-
* registry and its module-presence flags (#8843 D10), the
|
|
32
|
+
* registry and its module-presence flags (#8843 D10), the paid MCP tool
|
|
33
|
+
* registry (#9460 DD6; `update` rewrites it every run, #9567), the four spoke seams, and a commerce spoke's checkout config,
|
|
33
34
|
* which the checkout writer stamps and the site owns from then on (#8748
|
|
34
35
|
* D2). Composed from each writer's own exported path constant, so a renamed
|
|
35
36
|
* constant carries its path along here too (#8522 D2).
|
|
@@ -40,18 +41,35 @@ export const REGENERATED_APP_PATHS = [
|
|
|
40
41
|
SITE_FONTS_PATH,
|
|
41
42
|
PAID_SECTIONS_PATH,
|
|
42
43
|
MODULE_FLAGS_PATH,
|
|
44
|
+
PAID_MCP_TOOLS_PATH,
|
|
43
45
|
...SPOKE_SEAM_FILES,
|
|
44
46
|
SPOKE_CHECKOUT_CONFIG_PATH,
|
|
45
47
|
];
|
|
46
48
|
const REGENERATED_SET = new Set(REGENERATED_APP_PATHS);
|
|
47
49
|
const RECORDABLE_APP_ROOT = /^apps\/(web|api|mcp)\//;
|
|
50
|
+
/**
|
|
51
|
+
* A hub's thin `database/` (#9569 DD1/DD8): the Prisma config that points at
|
|
52
|
+
* the installed `@working-theory/database`, and the two seeds the package
|
|
53
|
+
* does not publish. Recorded and carried by `update` like an app file; the
|
|
54
|
+
* module data files beside them (`database/flows/`, `database/waitlist/`)
|
|
55
|
+
* are bundle output, never recorded.
|
|
56
|
+
*/
|
|
57
|
+
export const DATABASE_BOOT_FILES = [
|
|
58
|
+
"database/prisma.config.ts",
|
|
59
|
+
"database/seed.ts",
|
|
60
|
+
"database/seed-test.ts",
|
|
61
|
+
];
|
|
62
|
+
const DATABASE_BOOT_SET = new Set(DATABASE_BOOT_FILES);
|
|
48
63
|
/**
|
|
49
64
|
* Whether a destination path (`/`-separated, as `templateDestination`
|
|
50
|
-
* returns it) is one `update` ever records or touches (#8522 D2):
|
|
51
|
-
*
|
|
52
|
-
* `.claude` segment, and not a
|
|
65
|
+
* returns it) is one `update` ever records or touches (#8522 D2): one of
|
|
66
|
+
* the three `DATABASE_BOOT_FILES`, or under one of the three app trees, not
|
|
67
|
+
* a `package.json`, not an `.env*` file, no `.claude` segment, and not a
|
|
68
|
+
* path a generator rewrites after the copy.
|
|
53
69
|
*/
|
|
54
70
|
export function isRecordable(destRel) {
|
|
71
|
+
if (DATABASE_BOOT_SET.has(destRel))
|
|
72
|
+
return true;
|
|
55
73
|
if (!RECORDABLE_APP_ROOT.test(destRel))
|
|
56
74
|
return false;
|
|
57
75
|
const segments = destRel.split("/");
|
package/dist/topology.d.ts
CHANGED
|
@@ -150,13 +150,26 @@ export declare function renderWebSeam(topology: Topology, signIn?: SignInMode, o
|
|
|
150
150
|
* @throws TopologyError for a spoke in the default mode.
|
|
151
151
|
*/
|
|
152
152
|
export declare function renderAuthedGateSeam(topology: Topology, signIn?: SignInMode): string;
|
|
153
|
+
/** The hub seam's source of its workspace resolution and licence store (#9460 DD7). */
|
|
154
|
+
export declare const MCP_SERVER_HUB = "@working-theory/mcp-server/hub";
|
|
153
155
|
/** `apps/mcp/src/lib/topology.generated.ts` for `topology` (D5). */
|
|
154
156
|
export declare function renderMcpSeam(topology: Topology): string;
|
|
155
157
|
/** `apps/web/lib/api-origin.generated.ts` for `topology` (#7874 D12). */
|
|
156
158
|
export declare function renderApiOriginSeam(topology: Topology): string;
|
|
157
|
-
/**
|
|
158
|
-
|
|
159
|
-
|
|
159
|
+
/**
|
|
160
|
+
* The packages a hub's root `package.json` declares for its thin `database/`
|
|
161
|
+
* (#9569 DD3): the two the boot files import, and the three the `db:*`
|
|
162
|
+
* scripts run. `build-templates.mjs` writes them into the snapshot's root
|
|
163
|
+
* `devDependencies`; the spoke transform below strips the same five.
|
|
164
|
+
*/
|
|
165
|
+
export declare const DATABASE_CONSUMER_DEPENDENCIES: readonly string[];
|
|
166
|
+
/**
|
|
167
|
+
* The root `package.json` without its `db:*` scripts and without the
|
|
168
|
+
* `DATABASE_CONSUMER_DEPENDENCIES` lines (#9569 DD6): a spoke has no
|
|
169
|
+
* `database/`, so it runs no database script and installs no Prisma.
|
|
170
|
+
* @throws TopologyError when the `scripts` block or the
|
|
171
|
+
* `@working-theory/database` declaration is absent.
|
|
172
|
+
*/
|
|
160
173
|
export declare function transformRootPackageJson(text: string): string;
|
|
161
174
|
/** The spoke's declared-env script (#7874 D11) — named apart from the monorepo's `env:check`. */
|
|
162
175
|
export declare const ENV_DECLARED_SCRIPT = "env:declared";
|
package/dist/topology.js
CHANGED
|
@@ -67,9 +67,6 @@ export const SPOKE_REMOVAL_SEEDS = [
|
|
|
67
67
|
"apps/web/app/api/auth",
|
|
68
68
|
"apps/web/app/[locale]/(auth)",
|
|
69
69
|
"apps/web/app/[locale]/(authed)",
|
|
70
|
-
"apps/mcp/src/lib/prisma.ts",
|
|
71
|
-
"apps/mcp/src/lib/public-workspace.ts",
|
|
72
|
-
"apps/mcp/src/lib/license-key-store.ts",
|
|
73
70
|
...SPOKE_HUB_CHECKOUT_SEEDS,
|
|
74
71
|
];
|
|
75
72
|
/**
|
|
@@ -618,6 +615,8 @@ export function SignedOutGate({
|
|
|
618
615
|
* create-ailk carries no runtime dependency.
|
|
619
616
|
*/
|
|
620
617
|
const CONTENT_ADAPTERS_PACKAGE = "@working-theory/content-adapters";
|
|
618
|
+
/** The hub seam's source of its workspace resolution and licence store (#9460 DD7). */
|
|
619
|
+
export const MCP_SERVER_HUB = "@working-theory/mcp-server/hub";
|
|
621
620
|
/** `apps/mcp/src/lib/topology.generated.ts` for `topology` (D5). */
|
|
622
621
|
export function renderMcpSeam(topology) {
|
|
623
622
|
if (topology === "hub") {
|
|
@@ -626,9 +625,9 @@ import {
|
|
|
626
625
|
initMcpPublicWorkspace,
|
|
627
626
|
mcpPublicWorkspace,
|
|
628
627
|
type McpWorkspaceResolution,
|
|
629
|
-
} from "
|
|
628
|
+
} from "${MCP_SERVER_HUB}";
|
|
630
629
|
|
|
631
|
-
export { registerLicenseKeyStore } from "
|
|
630
|
+
export { registerLicenseKeyStore } from "${MCP_SERVER_HUB}";
|
|
632
631
|
export type { McpWorkspaceResolution };
|
|
633
632
|
|
|
634
633
|
export const TOPOLOGY: "hub" | "spoke" = "hub";
|
|
@@ -709,22 +708,37 @@ function dropLines(text, drop, label, json) {
|
|
|
709
708
|
}
|
|
710
709
|
return next;
|
|
711
710
|
}
|
|
712
|
-
/**
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
711
|
+
/**
|
|
712
|
+
* The packages a hub's root `package.json` declares for its thin `database/`
|
|
713
|
+
* (#9569 DD3): the two the boot files import, and the three the `db:*`
|
|
714
|
+
* scripts run. `build-templates.mjs` writes them into the snapshot's root
|
|
715
|
+
* `devDependencies`; the spoke transform below strips the same five.
|
|
716
|
+
*/
|
|
717
|
+
export const DATABASE_CONSUMER_DEPENDENCIES = [
|
|
718
|
+
"@working-theory/database",
|
|
719
|
+
"@working-theory/validation",
|
|
720
|
+
"@prisma/adapter-pg",
|
|
721
|
+
"prisma",
|
|
722
|
+
"dotenv",
|
|
723
|
+
];
|
|
724
|
+
/**
|
|
725
|
+
* The root `package.json` without its `db:*` scripts and without the
|
|
726
|
+
* `DATABASE_CONSUMER_DEPENDENCIES` lines (#9569 DD6): a spoke has no
|
|
727
|
+
* `database/`, so it runs no database script and installs no Prisma.
|
|
728
|
+
* @throws TopologyError when the `scripts` block or the
|
|
729
|
+
* `@working-theory/database` declaration is absent.
|
|
730
|
+
*/
|
|
721
731
|
export function transformRootPackageJson(text) {
|
|
722
732
|
const pkg = JSON.parse(text);
|
|
723
733
|
if (pkg.scripts === undefined) {
|
|
724
734
|
throw new TopologyError(`package.json: no "scripts" block to remove the db:* scripts from`);
|
|
725
735
|
}
|
|
726
736
|
const scriptLine = /^\s*"db:[^"]*"\s*:/;
|
|
727
|
-
|
|
737
|
+
const depLine = new RegExp(`^\\s*"(${DATABASE_CONSUMER_DEPENDENCIES.map((name) => name.replace(/[/@.]/g, "\\$&")).join("|")})"\\s*:`);
|
|
738
|
+
if (!text.split("\n").some((line) => /^\s*"@working-theory\/database"\s*:/.test(line))) {
|
|
739
|
+
throw new TopologyError(`package.json: no "@working-theory/database" dependency to remove`);
|
|
740
|
+
}
|
|
741
|
+
return dropLines(text, (line) => scriptLine.test(line) || depLine.test(line), "package.json", true);
|
|
728
742
|
}
|
|
729
743
|
/** The spoke's declared-env script (#7874 D11) — named apart from the monorepo's `env:check`. */
|
|
730
744
|
export const ENV_DECLARED_SCRIPT = "env:declared";
|
|
@@ -825,7 +839,6 @@ export function applySpokeTransforms(targetDir, opts) {
|
|
|
825
839
|
if (next !== text)
|
|
826
840
|
writeFileSync(path, next);
|
|
827
841
|
};
|
|
828
|
-
edit("pnpm-workspace.yaml", transformWorkspaceYaml);
|
|
829
842
|
edit("package.json", (text) => addEnvCheckScripts(transformRootPackageJson(text)));
|
|
830
843
|
edit(".github/workflows/ci.yml", transformCiWorkflow);
|
|
831
844
|
edit("tsconfig.json", (text) => transformRootTsconfig(text, opts));
|
|
@@ -937,9 +950,8 @@ export function renderSpokeHardFloors(opts) {
|
|
|
937
950
|
? " reason: sign-in paths — this spoke signs in through its hub; every change requires human review"
|
|
938
951
|
: " reason: sign-in paths — absent on a spoke; their return requires human review",
|
|
939
952
|
];
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
}
|
|
953
|
+
// No MCP tool floor (#9567): a spoke's `apps/mcp/src` is the boot set, and
|
|
954
|
+
// the tool surface lives in `@working-theory/mcp-server`.
|
|
943
955
|
return `${lines.join("\n")}\n`;
|
|
944
956
|
}
|
|
945
957
|
/** `project.yaml` with its `hard_floors:` block replaced by the spoke's (D9). */
|
package/dist/update.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { WorkspaceVersionMap } from "./substitute.js";
|
|
1
2
|
/** A refusal the CLI exits 2 on, thrown before anything is written. */
|
|
2
3
|
export declare class UpdateRefusedError extends Error {
|
|
3
4
|
readonly exitCode = 2;
|
|
@@ -14,6 +15,14 @@ export interface UpdateSiteOptions {
|
|
|
14
15
|
registryUrl?: string;
|
|
15
16
|
/** Injected fetch for tests. Never a live network call in CI. */
|
|
16
17
|
fetchImpl?: typeof fetch;
|
|
18
|
+
/**
|
|
19
|
+
* The running package's `versions.json` map (#9567): the versions the move
|
|
20
|
+
* of a copied `apps/mcp` declares `@working-theory/mcp-server` and each
|
|
21
|
+
* carried module's paid MCP pack at, and (#9566) the move of a copied
|
|
22
|
+
* `apps/api` declares `@working-theory/api` and the six module packages
|
|
23
|
+
* at. A site already on both boot sets, or a spoke, never reads it.
|
|
24
|
+
*/
|
|
25
|
+
versions?: WorkspaceVersionMap;
|
|
17
26
|
}
|
|
18
27
|
export interface UpdateResult {
|
|
19
28
|
targetDir: string;
|
|
@@ -48,6 +57,6 @@ export interface UpdateArgs {
|
|
|
48
57
|
target: string | undefined;
|
|
49
58
|
help: boolean;
|
|
50
59
|
}
|
|
51
|
-
export declare const UPDATE_HELP = "create-ailk update \u2014 bring template fixes into a site's copied app code.\n\nUsage:\n create-ailk update [<target-dir>]\n\nArguments:\n <target-dir> The existing site. Defaults to the current dir.\n\nOptions:\n --help, -h Print this message.\n\nReads .ailk-template-files.json (written beside .ailk-site-manifest.json by\nevery template scaffold) to tell an untouched copy from an edit. An\nuntouched apps/web, apps/api or apps/mcp file whose template copy changed is\noverwritten. An edited file whose template copy also changed is three-way\nmerged with `git` (git must be on PATH); a conflict leaves the file alone\nand is listed under \"Needs review\". Every template test that imports a file\nleft under \"Needs review\" or \"Skipped\" (by a relative import) is held at the\nsite's version with it, its record entry is not advanced, and it is listed\nunder \"Held back with <file>\" \u2014 reconcile the file, then run update again to\nbring its tests forward. Every other file in the run still updates.\nA site with no record gets one on its first run, from the version its\n.ailk-site-manifest.json already records. Commit before running, and review\
|
|
60
|
+
export declare const UPDATE_HELP = "create-ailk update \u2014 bring template fixes into a site's copied app code.\n\nUsage:\n create-ailk update [<target-dir>]\n\nArguments:\n <target-dir> The existing site. Defaults to the current dir.\n\nOptions:\n --help, -h Print this message.\n\nReads .ailk-template-files.json (written beside .ailk-site-manifest.json by\nevery template scaffold) to tell an untouched copy from an edit. An\nuntouched apps/web, apps/api or apps/mcp file whose template copy changed is\noverwritten. An edited file whose template copy also changed is three-way\nmerged with `git` (git must be on PATH); a conflict leaves the file alone\nand is listed under \"Needs review\". Every template test that imports a file\nleft under \"Needs review\" or \"Skipped\" (by a relative import) is held at the\nsite's version with it, its record entry is not advanced, and it is listed\nunder \"Held back with <file>\" \u2014 reconcile the file, then run update again to\nbring its tests forward. Every other file in the run still updates.\nA site with no record gets one on its first run, from the version its\n.ailk-site-manifest.json already records. A site scaffolded before\n@working-theory/mcp-server has its copied apps/mcp moved to the boot set:\nthe server and each module's paid MCP pack join apps/mcp/package.json, the\ncopied server files go, and apps/mcp/src/lib/paid-tools.generated.ts is\nrewritten on every run. A site scaffolded before @working-theory/api has its\ncopied apps/api moved to the boot file: the app becomes @working-theory/app-api,\nthe package and the six @working-theory/api-<module> packages join\napps/api/package.json, its bins and build:vercel delegate to the package, and\nthe copied server files go. Run `pnpm install` after either move, since the\napp's package.json gained dependencies. Commit before running, and review the\ndiff after.\n";
|
|
52
61
|
/** Parse the argv AFTER the `update` word. Strict `node:util` parseArgs, like `parseAdoptArgs`. */
|
|
53
62
|
export declare function parseUpdateArgs(argv: string[]): UpdateArgs;
|