create-ailk 0.10.0 → 0.11.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.
Files changed (103) hide show
  1. package/README.md +7 -2
  2. package/dist/cli.js +5 -1
  3. package/dist/content-payloads.d.ts +37 -0
  4. package/dist/content-payloads.js +64 -0
  5. package/dist/lib/fetch-module.d.ts +3 -3
  6. package/dist/lib/fetch-module.js +11 -5
  7. package/dist/lib/fetch-template.d.ts +1 -1
  8. package/dist/lib/fetch-template.js +7 -4
  9. package/dist/lib/scaffold-render-sweep.d.ts +16 -0
  10. package/dist/lib/scaffold-render-sweep.js +52 -3
  11. package/dist/module-architecture.d.ts +9 -0
  12. package/dist/module-architecture.js +43 -12
  13. package/dist/parse-args.d.ts +2 -0
  14. package/dist/parse-args.js +7 -0
  15. package/dist/surfaces.js +2 -3
  16. package/package.json +3 -3
  17. package/site-templates/marketing-site-free/TEMPLATE-MANIFEST.md +4 -3
  18. package/site-templates/shapes/local-business-service/content/en/Service/first-job.mdx +8 -8
  19. package/site-templates/shapes/local-business-service/content/en/Service/second-job.mdx +8 -8
  20. package/site-templates/shapes/local-business-service/content/en/Service/third-job.mdx +8 -8
  21. package/site-templates/shapes/organization-service/content/en/Service/first-engagement.mdx +8 -8
  22. package/site-templates/shapes/organization-service/content/en/Service/second-engagement.mdx +8 -8
  23. package/site-templates/shapes/organization-service/content/en/Service/third-engagement.mdx +8 -8
  24. package/site-templates/shapes/person-service/content/en/Service/first-engagement.mdx +8 -8
  25. package/site-templates/shapes/person-service/content/en/Service/second-engagement.mdx +8 -8
  26. package/site-templates/shapes/person-service/content/en/Service/third-engagement.mdx +8 -8
  27. package/templates/.claude/settings.json +12 -0
  28. package/templates/.env.example +1 -5
  29. package/templates/CLAUDE.md +38 -22
  30. package/templates/README.md +12 -12
  31. package/templates/apps/api/jest.config.cjs +1 -0
  32. package/templates/apps/api/package.json +2 -1
  33. package/templates/apps/mcp/CLAUDE.md +23 -10
  34. package/templates/apps/mcp/__tests__/catalog-drift.test.ts +160 -17
  35. package/templates/apps/mcp/__tests__/index.test.ts +118 -1
  36. package/templates/apps/mcp/__tests__/lib/commerce-claim.test.ts +425 -5
  37. package/templates/apps/mcp/__tests__/module-exclusion.test.ts +67 -3
  38. package/templates/apps/mcp/__tests__/server.test.ts +162 -1
  39. package/templates/apps/mcp/package.json +1 -1
  40. package/templates/apps/mcp/src/index.ts +35 -3
  41. package/templates/apps/mcp/src/lib/commerce-claim.ts +193 -24
  42. package/templates/apps/mcp/src/server.ts +77 -5
  43. package/templates/apps/mcp/src/tools/purchase.ts +1 -1
  44. package/templates/apps/web/CLAUDE.md +1 -1
  45. package/templates/apps/web/app/.well-known/mcp.json/build-manifest.ts +15 -0
  46. package/templates/apps/web/app/.well-known/mcp.json/route.ts +10 -3
  47. package/templates/apps/web/app/[locale]/careers/[slug]/page.tsx +0 -10
  48. package/templates/apps/web/app/[locale]/case-studies/[slug]/page.tsx +0 -10
  49. package/templates/apps/web/app/[locale]/courses/[slug]/page.tsx +1 -14
  50. package/templates/apps/web/app/[locale]/events/[slug]/page.tsx +0 -10
  51. package/templates/apps/web/app/[locale]/features/[slug]/page.tsx +0 -10
  52. package/templates/apps/web/app/[locale]/for/[slug]/page.tsx +0 -10
  53. package/templates/apps/web/app/[locale]/how-to/[slug]/page.tsx +1 -14
  54. package/templates/apps/web/app/[locale]/integrations/[slug]/page.tsx +0 -10
  55. package/templates/apps/web/app/[locale]/partners/[slug]/page.tsx +0 -10
  56. package/templates/apps/web/app/[locale]/portfolio/[slug]/page.tsx +0 -10
  57. package/templates/apps/web/app/[locale]/products/[slug]/page.tsx +0 -10
  58. package/templates/apps/web/app/[locale]/projects/[slug]/page.tsx +1 -15
  59. package/templates/apps/web/app/[locale]/resources/[slug]/page.tsx +0 -10
  60. package/templates/apps/web/app/[locale]/services/[slug]/page.tsx +0 -10
  61. package/templates/apps/web/app/[locale]/software/[slug]/page.tsx +0 -10
  62. package/templates/apps/web/app/[locale]/tech-articles/[slug]/page.tsx +1 -14
  63. package/templates/apps/web/app/[locale]/thanks/[slug]/page.tsx +4 -16
  64. package/templates/apps/web/app/[locale]/vs/[slug]/__tests__/page.test.tsx +3 -15
  65. package/templates/apps/web/app/[locale]/vs/[slug]/page.tsx +0 -10
  66. package/templates/apps/web/app/[locale]/whitepapers/[slug]/page.tsx +1 -14
  67. package/templates/apps/web/src/lib/commerce-claim.ts +15 -6
  68. package/templates/content/_site.mdx +23 -4
  69. package/templates/database/CHANGELOG.md +7 -0
  70. package/templates/database/package.json +1 -1
  71. package/versions.json +34 -34
  72. package/templates/.claude/skills/README.md +0 -37
  73. package/templates/.claude/skills/add-auth/SKILL.md +0 -313
  74. package/templates/.claude/skills/add-auth/references/env-vars.md +0 -106
  75. package/templates/.claude/skills/add-auth/references/oauth-app-setup.md +0 -180
  76. package/templates/.claude/skills/add-page/SKILL.md +0 -260
  77. package/templates/.claude/skills/add-page/references/page-types.md +0 -123
  78. package/templates/.claude/skills/add-page/scripts/site-pages.mjs +0 -87
  79. package/templates/.claude/skills/add-page/templates/comparison-page.mdx.tmpl +0 -99
  80. package/templates/.claude/skills/add-page/templates/content.mdx.tmpl +0 -18
  81. package/templates/.claude/skills/add-page/templates/flow-landing-page.mdx.tmpl +0 -43
  82. package/templates/.claude/skills/add-page/templates/report-page.mdx.tmpl +0 -52
  83. package/templates/.claude/skills/add-page/templates/reports-list.mdx.tmpl +0 -38
  84. package/templates/.claude/skills/check-site/SKILL.md +0 -245
  85. package/templates/.claude/skills/check-site/references/common-errors.md +0 -116
  86. package/templates/.claude/skills/check-site/references/findings-glossary.md +0 -140
  87. package/templates/.claude/skills/check-site/references/severity-levels.md +0 -114
  88. package/templates/.claude/skills/fill-page/SKILL.md +0 -199
  89. package/templates/.claude/skills/fill-page/profiles/plumbing.yaml +0 -80
  90. package/templates/.claude/skills/fill-page/references/section-sources.md +0 -41
  91. package/templates/.claude/skills/setup-database/SKILL.md +0 -156
  92. package/templates/.claude/skills/setup-database/scripts/verify-inbox.ts +0 -154
  93. package/templates/.claude/skills/setup-deploy/SKILL.md +0 -312
  94. package/templates/.claude/skills/setup-deploy/references/runbook-template.md +0 -204
  95. package/templates/.claude/skills/setup-deploy/references/vercel-json-template.md +0 -98
  96. package/templates/.claude/skills/update-page/SKILL.md +0 -117
  97. package/templates/.claude/skills/update-page/scripts/update-page.ts +0 -640
  98. package/templates/.claude/skills/update-page/templates/redirects.mjs.tmpl +0 -31
  99. package/templates/.claude/skills/upgrade-plan/SKILL.md +0 -121
  100. package/templates/.claude/skills/upgrade-plan/references/options.md +0 -24
  101. package/templates/.claude/skills/upgrade-plan/scripts/upgrade-plan.ts +0 -527
  102. package/templates/apps/mcp/__tests__/lib/require-paid-tier.test.ts +0 -75
  103. package/templates/apps/mcp/src/lib/require-paid-tier.ts +0 -44
@@ -1,75 +0,0 @@
1
- /**
2
- * Unit tests for the MCP-side require-paid-tier guard.
3
- *
4
- * Mocks @working-theory/license `checkLicense` and asserts:
5
- * - free tier → returns canonical payment_required body
6
- * - pro tier → returns null (caller proceeds)
7
- * - checkLicense throws → safe-by-default, returns payment_required
8
- */
9
-
10
- const mockCheckLicense = jest.fn();
11
-
12
- jest.mock("@working-theory/license", () => ({
13
- checkLicense: (...args: unknown[]) => mockCheckLicense(...args),
14
- }));
15
-
16
- import { requirePaidTier } from "../../src/lib/require-paid-tier.js";
17
-
18
- describe("requirePaidTier (mcp)", () => {
19
- beforeEach(() => {
20
- mockCheckLicense.mockReset();
21
- });
22
-
23
- it("free tier — returns canonical payment_required body", async () => {
24
- mockCheckLicense.mockResolvedValue({
25
- tier: "free",
26
- plan: null,
27
- features: [],
28
- expiresAt: null,
29
- revoked: false,
30
- });
31
-
32
- const guard = await requirePaidTier();
33
-
34
- expect(guard).toEqual({
35
- error: "payment_required",
36
- message: expect.stringContaining("paid license"),
37
- });
38
- });
39
-
40
- it("pro tier — returns null (caller proceeds)", async () => {
41
- mockCheckLicense.mockResolvedValue({
42
- tier: "pro",
43
- plan: "pro",
44
- features: [],
45
- expiresAt: null,
46
- revoked: false,
47
- });
48
-
49
- const guard = await requirePaidTier();
50
- expect(guard).toBeNull();
51
- });
52
-
53
- it("checkLicense throws — degrades to payment_required (safe default)", async () => {
54
- mockCheckLicense.mockRejectedValue(new Error("boom"));
55
-
56
- const guard = await requirePaidTier();
57
- expect(guard).toMatchObject({ error: "payment_required" });
58
- });
59
-
60
- it("revoked paid license — returns payment_required even though tier is pro (issue #398)", async () => {
61
- // After a 403/revoked refresh, checkLicense() returns tier:'pro' until
62
- // the existing JWT exp (up to 24h). The revoked flag is the early
63
- // signal — we must close the gate now, not wait for exp.
64
- mockCheckLicense.mockResolvedValue({
65
- tier: "pro",
66
- plan: "pro",
67
- features: [],
68
- expiresAt: null,
69
- revoked: true,
70
- });
71
-
72
- const guard = await requirePaidTier();
73
- expect(guard).toMatchObject({ error: "payment_required" });
74
- });
75
- });
@@ -1,44 +0,0 @@
1
- /**
2
- * Paid-tier license guard for apps/mcp content-write tools (D14a Stage 0).
3
- *
4
- * Calls `checkLicense()` from @working-theory/license and returns a canonical
5
- * `payment_required` error body for free tier; returns `null` to signal the
6
- * caller may proceed.
7
- *
8
- * Usage in a tool handler:
9
- *
10
- * const guard = await requirePaidTier();
11
- * if (guard) return guard; // free tier — return canonical error body
12
- * // paid tier — proceed
13
- *
14
- * Pattern intentionally returns the error body directly (vs. throwing) — MCP
15
- * tools surface errors as their result body, not via thrown exceptions.
16
- */
17
-
18
- import { checkLicense } from "@working-theory/license";
19
-
20
- import { paymentRequiredError, type ErrorBody } from "./errors.js";
21
-
22
- const FREE_TIER_MESSAGE =
23
- "This tool requires a paid license. Visit https://ailaunchkit.ai to upgrade.";
24
-
25
- export async function requirePaidTier(): Promise<ErrorBody | null> {
26
- let result;
27
- try {
28
- result = await checkLicense();
29
- } catch {
30
- // Per ADR 0014 — local-verify license; an exception is a bug, not a
31
- // network failure. Treat as free for safe-by-default gating.
32
- return paymentRequiredError(FREE_TIER_MESSAGE);
33
- }
34
-
35
- // Revoked paid licenses keep verifying until JWT exp (up to 24h after the
36
- // server reports `revoked`). Closing the gate when `revoked === true`
37
- // shrinks that window to "next request" without waiting for exp. See
38
- // packages/license/src/types.ts § LicenseResult and ADR 0014.
39
- if (result.revoked === true || result.tier === "free") {
40
- return paymentRequiredError(FREE_TIER_MESSAGE);
41
- }
42
-
43
- return null;
44
- }