@planu/cli 0.97.1 → 0.98.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.
Files changed (139) hide show
  1. package/dist/cli/commands/install.d.ts.map +1 -1
  2. package/dist/cli/commands/install.js +1 -1
  3. package/dist/cli/commands/install.js.map +1 -1
  4. package/dist/config/license-plans.json +6 -2
  5. package/dist/config/mobile-ci-templates/android-github-actions.yml +149 -0
  6. package/dist/config/mobile-ci-templates/ios-github-actions.yml +120 -0
  7. package/dist/engine/api-validation/graphql-schema-validator.d.ts +3 -0
  8. package/dist/engine/api-validation/graphql-schema-validator.d.ts.map +1 -0
  9. package/dist/engine/api-validation/graphql-schema-validator.js +134 -0
  10. package/dist/engine/api-validation/graphql-schema-validator.js.map +1 -0
  11. package/dist/engine/api-validation/index.d.ts +3 -0
  12. package/dist/engine/api-validation/index.d.ts.map +1 -0
  13. package/dist/engine/api-validation/index.js +4 -0
  14. package/dist/engine/api-validation/index.js.map +1 -0
  15. package/dist/engine/api-validation/openapi-impl-validator.d.ts +3 -0
  16. package/dist/engine/api-validation/openapi-impl-validator.d.ts.map +1 -0
  17. package/dist/engine/api-validation/openapi-impl-validator.js +205 -0
  18. package/dist/engine/api-validation/openapi-impl-validator.js.map +1 -0
  19. package/dist/engine/ci-generator/android-jobs.d.ts +17 -0
  20. package/dist/engine/ci-generator/android-jobs.d.ts.map +1 -0
  21. package/dist/engine/ci-generator/android-jobs.js +168 -0
  22. package/dist/engine/ci-generator/android-jobs.js.map +1 -0
  23. package/dist/engine/ci-generator/ios-jobs.d.ts +17 -0
  24. package/dist/engine/ci-generator/ios-jobs.d.ts.map +1 -0
  25. package/dist/engine/ci-generator/ios-jobs.js +151 -0
  26. package/dist/engine/ci-generator/ios-jobs.js.map +1 -0
  27. package/dist/engine/ci-generator/yaml-builder.d.ts +10 -1
  28. package/dist/engine/ci-generator/yaml-builder.d.ts.map +1 -1
  29. package/dist/engine/ci-generator/yaml-builder.js +46 -1
  30. package/dist/engine/ci-generator/yaml-builder.js.map +1 -1
  31. package/dist/engine/compliance-checker.js +3 -0
  32. package/dist/engine/compliance-checker.js.map +1 -1
  33. package/dist/engine/coverage-gap-analyzer.d.ts +6 -0
  34. package/dist/engine/coverage-gap-analyzer.d.ts.map +1 -0
  35. package/dist/engine/coverage-gap-analyzer.js +177 -0
  36. package/dist/engine/coverage-gap-analyzer.js.map +1 -0
  37. package/dist/engine/dashboard/templates-kanban.d.ts.map +1 -1
  38. package/dist/engine/dashboard/templates-kanban.js +22 -0
  39. package/dist/engine/dashboard/templates-kanban.js.map +1 -1
  40. package/dist/engine/dashboard/templates-layout.d.ts.map +1 -1
  41. package/dist/engine/dashboard/templates-layout.js +59 -7
  42. package/dist/engine/dashboard/templates-layout.js.map +1 -1
  43. package/dist/engine/doc-generator/portal/portal-regenerator.d.ts.map +1 -1
  44. package/dist/engine/doc-generator/portal/portal-regenerator.js +7 -17
  45. package/dist/engine/doc-generator/portal/portal-regenerator.js.map +1 -1
  46. package/dist/engine/hooks/event-bus.d.ts +5 -0
  47. package/dist/engine/hooks/event-bus.d.ts.map +1 -1
  48. package/dist/engine/hooks/event-bus.js +14 -1
  49. package/dist/engine/hooks/event-bus.js.map +1 -1
  50. package/dist/engine/hooks/hook-engine.d.ts.map +1 -1
  51. package/dist/engine/hooks/hook-engine.js +1 -0
  52. package/dist/engine/hooks/hook-engine.js.map +1 -1
  53. package/dist/engine/hooks-reconciler.d.ts.map +1 -1
  54. package/dist/engine/hooks-reconciler.js +24 -35
  55. package/dist/engine/hooks-reconciler.js.map +1 -1
  56. package/dist/engine/jira-exporter.d.ts.map +1 -1
  57. package/dist/engine/jira-exporter.js +1 -0
  58. package/dist/engine/jira-exporter.js.map +1 -1
  59. package/dist/engine/mutation-config-generator.d.ts +6 -0
  60. package/dist/engine/mutation-config-generator.d.ts.map +1 -0
  61. package/dist/engine/mutation-config-generator.js +111 -0
  62. package/dist/engine/mutation-config-generator.js.map +1 -0
  63. package/dist/engine/skill-evaluator.d.ts.map +1 -1
  64. package/dist/engine/skill-evaluator.js +18 -0
  65. package/dist/engine/skill-evaluator.js.map +1 -1
  66. package/dist/engine/spec-quality-scorer.d.ts.map +1 -1
  67. package/dist/engine/spec-quality-scorer.js +10 -2
  68. package/dist/engine/spec-quality-scorer.js.map +1 -1
  69. package/dist/engine/tdd-scaffold-generator.d.ts +7 -0
  70. package/dist/engine/tdd-scaffold-generator.d.ts.map +1 -0
  71. package/dist/engine/tdd-scaffold-generator.js +252 -0
  72. package/dist/engine/tdd-scaffold-generator.js.map +1 -0
  73. package/dist/engine/token-optimizer/response-cache.d.ts.map +1 -1
  74. package/dist/engine/token-optimizer/response-cache.js +7 -2
  75. package/dist/engine/token-optimizer/response-cache.js.map +1 -1
  76. package/dist/engine/version-resolver.d.ts +10 -0
  77. package/dist/engine/version-resolver.d.ts.map +1 -0
  78. package/dist/engine/version-resolver.js +144 -0
  79. package/dist/engine/version-resolver.js.map +1 -0
  80. package/dist/engine/web-fetcher/stack-advisor.d.ts.map +1 -1
  81. package/dist/engine/web-fetcher/stack-advisor.js +32 -4
  82. package/dist/engine/web-fetcher/stack-advisor.js.map +1 -1
  83. package/dist/engine/webhook/server.d.ts.map +1 -1
  84. package/dist/engine/webhook/server.js +3 -0
  85. package/dist/engine/webhook/server.js.map +1 -1
  86. package/dist/index.js +7 -11
  87. package/dist/index.js.map +1 -1
  88. package/dist/storage/base-store.d.ts.map +1 -1
  89. package/dist/storage/base-store.js +2 -1
  90. package/dist/storage/base-store.js.map +1 -1
  91. package/dist/tools/checkpoint-handler.d.ts.map +1 -1
  92. package/dist/tools/checkpoint-handler.js +24 -1
  93. package/dist/tools/checkpoint-handler.js.map +1 -1
  94. package/dist/tools/dashboard.d.ts.map +1 -1
  95. package/dist/tools/dashboard.js +2 -0
  96. package/dist/tools/dashboard.js.map +1 -1
  97. package/dist/tools/register-spec-322-tools.d.ts +3 -0
  98. package/dist/tools/register-spec-322-tools.d.ts.map +1 -0
  99. package/dist/tools/register-spec-322-tools.js +41 -0
  100. package/dist/tools/register-spec-322-tools.js.map +1 -0
  101. package/dist/tools/register-spec-323-tools.d.ts +3 -0
  102. package/dist/tools/register-spec-323-tools.d.ts.map +1 -0
  103. package/dist/tools/register-spec-323-tools.js +57 -0
  104. package/dist/tools/register-spec-323-tools.js.map +1 -0
  105. package/dist/tools/resolve-project-id.d.ts.map +1 -1
  106. package/dist/tools/resolve-project-id.js +6 -1
  107. package/dist/tools/resolve-project-id.js.map +1 -1
  108. package/dist/tools/tdd-scaffold-handler.d.ts +5 -0
  109. package/dist/tools/tdd-scaffold-handler.d.ts.map +1 -0
  110. package/dist/tools/tdd-scaffold-handler.js +92 -0
  111. package/dist/tools/tdd-scaffold-handler.js.map +1 -0
  112. package/dist/tools/update-status/index.d.ts.map +1 -1
  113. package/dist/tools/update-status/index.js +8 -2
  114. package/dist/tools/update-status/index.js.map +1 -1
  115. package/dist/tools/validate-api-contract-handler.d.ts +3 -0
  116. package/dist/tools/validate-api-contract-handler.d.ts.map +1 -0
  117. package/dist/tools/validate-api-contract-handler.js +74 -0
  118. package/dist/tools/validate-api-contract-handler.js.map +1 -0
  119. package/dist/tools/validate.d.ts.map +1 -1
  120. package/dist/tools/validate.js +22 -2
  121. package/dist/tools/validate.js.map +1 -1
  122. package/dist/types/api-contract.d.ts +58 -0
  123. package/dist/types/api-contract.d.ts.map +1 -1
  124. package/dist/types/ci.d.ts +8 -0
  125. package/dist/types/ci.d.ts.map +1 -1
  126. package/dist/types/index.d.ts +1 -0
  127. package/dist/types/index.d.ts.map +1 -1
  128. package/dist/types/index.js +1 -0
  129. package/dist/types/index.js.map +1 -1
  130. package/dist/types/testing.d.ts +60 -0
  131. package/dist/types/testing.d.ts.map +1 -1
  132. package/dist/types/version-resolution.d.ts +23 -0
  133. package/dist/types/version-resolution.d.ts.map +1 -0
  134. package/dist/types/version-resolution.js +3 -0
  135. package/dist/types/version-resolution.js.map +1 -0
  136. package/package.json +1 -1
  137. package/src/config/license-plans.json +6 -2
  138. package/src/config/mobile-ci-templates/android-github-actions.yml +149 -0
  139. package/src/config/mobile-ci-templates/ios-github-actions.yml +120 -0
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,oBAAoB,CAAC;AAUlE,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB;AAMD,UAAU,QAAQ;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,UAAU,iBAAiB;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;CACvC;AAED,UAAU,gBAAgB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,UAAU,gBAAgB;IACxB,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,UAAU,SAAS;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CACpD;AAED,KAAK,UAAU,GAAG,iBAAiB,GAAG,SAAS,CAAC;AAEhD,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,MAAM,EAAE,UAAU,GAAG,KAAK,CAAC;CAC5B;AA0ED,iBAAS,aAAa,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,QAAQ,CAYpD;AAED,iBAAS,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CASlD;AAED,iBAAS,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,OAAO,CAOpF;AASD,iBAAS,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,IAAI,CAWnE;AAED,iBAAS,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,IAAI,CAiB9D;AA4BD,iBAAS,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,IAAI,CAc7E;AAMD;;;;GAIG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAgD7E;AAGD,OAAO,EACL,aAAa,EACb,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,WAAW,GACZ,CAAC;AAoJF,eAAO,MAAM,cAAc,EAAE,UA2F5B,CAAC"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,oBAAoB,CAAC;AAUlE,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB;AAMD,UAAU,QAAQ;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,UAAU,iBAAiB;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;CACvC;AAED,UAAU,gBAAgB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,UAAU,gBAAgB;IACxB,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,UAAU,SAAS;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CACpD;AAED,KAAK,UAAU,GAAG,iBAAiB,GAAG,SAAS,CAAC;AAEhD,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,MAAM,EAAE,UAAU,GAAG,KAAK,CAAC;CAC5B;AA0ED,iBAAS,aAAa,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,QAAQ,CAYpD;AAED,iBAAS,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CASlD;AAED,iBAAS,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,OAAO,CAOpF;AASD,iBAAS,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,IAAI,CAWnE;AAED,iBAAS,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,IAAI,CAiB9D;AA4BD,iBAAS,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,IAAI,CAc7E;AAMD;;;;GAIG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAgD7E;AAGD,OAAO,EACL,aAAa,EACb,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,WAAW,GACZ,CAAC;AAsJF,eAAO,MAAM,cAAc,EAAE,UA2F5B,CAAC"}
@@ -241,7 +241,7 @@ function printBanner() {
241
241
  process.stdout.write(`\n ${dim(`Spec Driven Development MCP Server · v${PLANU_VERSION}`)}\n`);
242
242
  process.stdout.write(`\n ${bold('🔒 Privacy guarantee')}\n`);
243
243
  process.stdout.write(` ${dim('·')} Everything runs ${bold('locally')} — no cloud, no servers\n`);
244
- process.stdout.write(` ${dim('·')} Zero telemetry. Nothing is ever transmitted.\n`);
244
+ process.stdout.write(` ${dim('·')} Your code never leaves your machine. Planu is local-first.\n`);
245
245
  process.stdout.write(` ${dim('·')} No API key required. Your specs stay on your machine.\n`);
246
246
  process.stdout.write('\n');
247
247
  }
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":"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"}
@@ -87,7 +87,8 @@
87
87
  "check_spec_lock",
88
88
  "configure_desktop_notifications",
89
89
  "desktop_notification_status",
90
- "test_notification"
90
+ "test_notification",
91
+ "tdd_scaffold"
91
92
  ],
92
93
  "proTools": [
93
94
  "audit",
@@ -273,7 +274,10 @@
273
274
  "configure_compliance",
274
275
  "apply_spec_template",
275
276
  "publish_spec_template",
276
- "search_spec_templates"
277
+ "search_spec_templates",
278
+ "validate_api_contract",
279
+ "coverage_gap_analyzer",
280
+ "run_mutation_hints"
277
281
  ],
278
282
  "alwaysAllowed": [
279
283
  "activate_license",
@@ -0,0 +1,149 @@
1
+ name: Android CI/CD
2
+
3
+ on:
4
+ push:
5
+ branches: [main, develop]
6
+ pull_request:
7
+ branches: [main, develop]
8
+ workflow_dispatch:
9
+
10
+ jobs:
11
+
12
+ android-test:
13
+ name: Android — Gradle Unit Tests
14
+ runs-on: ubuntu-latest
15
+ steps:
16
+ - name: Checkout code
17
+ uses: actions/checkout@v4
18
+
19
+ - name: Setup JDK
20
+ uses: actions/setup-java@v4
21
+ with:
22
+ java-version: '17'
23
+ distribution: temurin
24
+
25
+ - name: Cache Gradle packages
26
+ uses: actions/cache@v4
27
+ with:
28
+ path: |
29
+ ~/.gradle/caches
30
+ ~/.gradle/wrapper
31
+ key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
32
+ restore-keys: ${{ runner.os }}-gradle-
33
+
34
+ - name: Grant Gradle execute permission
35
+ run: chmod +x gradlew
36
+
37
+ - name: Run unit tests
38
+ run: ./gradlew :{{module}}:testDebugUnitTest
39
+
40
+ - name: Upload test reports
41
+ uses: actions/upload-artifact@v4
42
+ with:
43
+ name: test-results
44
+ path: '{{module}}/build/reports/tests/'
45
+ if-no-files-found: warn
46
+
47
+ android-sign:
48
+ name: Android — Sign Release AAB
49
+ runs-on: ubuntu-latest
50
+ needs: android-test
51
+ if: github.ref == 'refs/heads/develop' || github.ref == 'refs/heads/main'
52
+ env:
53
+ KEYSTORE_FILE: ${{ secrets.KEYSTORE_FILE }}
54
+ KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
55
+ KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
56
+ KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
57
+ steps:
58
+ - name: Checkout code
59
+ uses: actions/checkout@v4
60
+
61
+ - name: Setup JDK
62
+ uses: actions/setup-java@v4
63
+ with:
64
+ java-version: '17'
65
+ distribution: temurin
66
+
67
+ - name: Cache Gradle packages
68
+ uses: actions/cache@v4
69
+ with:
70
+ path: |
71
+ ~/.gradle/caches
72
+ ~/.gradle/wrapper
73
+ key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
74
+ restore-keys: ${{ runner.os }}-gradle-
75
+
76
+ - name: Grant Gradle execute permission
77
+ run: chmod +x gradlew
78
+
79
+ - name: Decode keystore
80
+ run: echo "$KEYSTORE_FILE" | base64 --decode > keystore.jks
81
+ env:
82
+ KEYSTORE_FILE: ${{ secrets.KEYSTORE_FILE }}
83
+
84
+ - name: Build signed release AAB
85
+ run: |
86
+ ./gradlew :{{module}}:bundleRelease \
87
+ -Pandroid.injected.signing.store.file=$(pwd)/keystore.jks \
88
+ -Pandroid.injected.signing.store.password="$KEYSTORE_PASSWORD" \
89
+ -Pandroid.injected.signing.key.alias="$KEY_ALIAS" \
90
+ -Pandroid.injected.signing.key.password="$KEY_PASSWORD"
91
+ env:
92
+ KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
93
+ KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
94
+ KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
95
+
96
+ - name: Upload signed AAB
97
+ uses: actions/upload-artifact@v4
98
+ with:
99
+ name: release-aab
100
+ path: '{{module}}/build/outputs/bundle/release/*.aab'
101
+
102
+ android-deploy:
103
+ name: Android — Play Console Deploy
104
+ runs-on: ubuntu-latest
105
+ needs: android-sign
106
+ if: github.ref == 'refs/heads/main'
107
+ env:
108
+ PLAY_STORE_JSON_KEY: ${{ secrets.PLAY_STORE_JSON_KEY }}
109
+ steps:
110
+ - name: Checkout code
111
+ uses: actions/checkout@v4
112
+
113
+ - name: Download signed AAB
114
+ uses: actions/download-artifact@v4
115
+ with:
116
+ name: release-aab
117
+ path: ./release
118
+
119
+ - name: Setup Ruby for Fastlane
120
+ uses: ruby/setup-ruby@v1
121
+ with:
122
+ ruby-version: 'bundler-cache: true'
123
+
124
+ - name: Install Fastlane
125
+ run: gem install fastlane --no-document
126
+
127
+ - name: Decode Play Store JSON key
128
+ run: echo "$PLAY_STORE_JSON_KEY" > play-store-key.json
129
+ env:
130
+ PLAY_STORE_JSON_KEY: ${{ secrets.PLAY_STORE_JSON_KEY }}
131
+
132
+ - name: Upload to Play Console (internal track)
133
+ run: |
134
+ fastlane supply \
135
+ --aab ./release/{{module}}/build/outputs/bundle/release/*.aab \
136
+ --package_name "{{bundleId}}" \
137
+ --track internal \
138
+ --json_key ./play-store-key.json
139
+
140
+ # Required GitHub Secrets:
141
+ # KEYSTORE_FILE — Base64-encoded .jks keystore file
142
+ # KEYSTORE_PASSWORD — Password for the keystore file
143
+ # KEY_ALIAS — Alias of the signing key in the keystore
144
+ # KEY_PASSWORD — Password for the signing key
145
+ # PLAY_STORE_JSON_KEY — JSON content of the Google Play service account key
146
+ #
147
+ # Placeholders:
148
+ # {{module}} — Gradle module name (e.g. app)
149
+ # {{bundleId}} — Android application ID (e.g. com.example.myapp)
@@ -0,0 +1,120 @@
1
+ name: iOS CI/CD
2
+
3
+ on:
4
+ push:
5
+ branches: [main, develop]
6
+ pull_request:
7
+ branches: [main, develop]
8
+ workflow_dispatch:
9
+
10
+ jobs:
11
+
12
+ ios-test:
13
+ name: iOS — Xcode Build & Test
14
+ runs-on: macos-latest
15
+ env:
16
+ APPLE_API_KEY: ${{ secrets.APPLE_API_KEY }}
17
+ APPLE_API_ISSUER_ID: ${{ secrets.APPLE_API_ISSUER_ID }}
18
+ APPLE_API_KEY_ID: ${{ secrets.APPLE_API_KEY_ID }}
19
+ steps:
20
+ - name: Checkout code
21
+ uses: actions/checkout@v4
22
+
23
+ - name: Select Xcode version
24
+ run: sudo xcode-select -s /Applications/Xcode.app
25
+
26
+ - name: Build and test (Xcode)
27
+ run: |
28
+ xcodebuild clean build test \
29
+ -scheme "{{scheme}}" \
30
+ -destination 'platform=iOS Simulator,name=iPhone 15,OS=latest' \
31
+ CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO \
32
+ | xcpretty && exit "${PIPESTATUS[0]}"
33
+
34
+ ios-testflight:
35
+ name: iOS — TestFlight Upload
36
+ runs-on: macos-latest
37
+ needs: ios-test
38
+ if: github.ref == 'refs/heads/develop'
39
+ env:
40
+ APPLE_API_KEY: ${{ secrets.APPLE_API_KEY }}
41
+ APPLE_API_ISSUER_ID: ${{ secrets.APPLE_API_ISSUER_ID }}
42
+ APPLE_API_KEY_ID: ${{ secrets.APPLE_API_KEY_ID }}
43
+ MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
44
+ steps:
45
+ - name: Checkout code
46
+ uses: actions/checkout@v4
47
+
48
+ - name: Select Xcode version
49
+ run: sudo xcode-select -s /Applications/Xcode.app
50
+
51
+ - name: Setup Ruby for Fastlane
52
+ uses: ruby/setup-ruby@v1
53
+ with:
54
+ ruby-version: 'bundler-cache: true'
55
+
56
+ - name: Install Fastlane
57
+ run: gem install fastlane --no-document
58
+
59
+ - name: Build IPA
60
+ run: |
61
+ fastlane gym \
62
+ --scheme "{{scheme}}" \
63
+ --export_method app-store \
64
+ --output_directory ./build
65
+ env:
66
+ MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
67
+
68
+ - name: Upload to TestFlight
69
+ run: fastlane pilot upload --ipa ./build/*.ipa --skip_waiting_for_build_processing true
70
+
71
+ ios-appstore:
72
+ name: iOS — App Store Submission
73
+ runs-on: macos-latest
74
+ needs: ios-test
75
+ if: github.ref == 'refs/heads/main'
76
+ env:
77
+ APPLE_API_KEY: ${{ secrets.APPLE_API_KEY }}
78
+ APPLE_API_ISSUER_ID: ${{ secrets.APPLE_API_ISSUER_ID }}
79
+ APPLE_API_KEY_ID: ${{ secrets.APPLE_API_KEY_ID }}
80
+ MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
81
+ steps:
82
+ - name: Checkout code
83
+ uses: actions/checkout@v4
84
+
85
+ - name: Select Xcode version
86
+ run: sudo xcode-select -s /Applications/Xcode.app
87
+
88
+ - name: Setup Ruby for Fastlane
89
+ uses: ruby/setup-ruby@v1
90
+ with:
91
+ ruby-version: 'bundler-cache: true'
92
+
93
+ - name: Install Fastlane
94
+ run: gem install fastlane --no-document
95
+
96
+ - name: Build IPA (production)
97
+ run: |
98
+ fastlane gym \
99
+ --scheme "{{scheme}}" \
100
+ --configuration Release \
101
+ --export_method app-store \
102
+ --output_directory ./build
103
+ env:
104
+ MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
105
+
106
+ - name: Submit to App Store
107
+ run: |
108
+ fastlane deliver \
109
+ --ipa ./build/*.ipa \
110
+ --submit_for_review false \
111
+ --automatic_release false
112
+
113
+ # Required GitHub Secrets:
114
+ # APPLE_API_KEY — Base64-encoded .p8 private key from App Store Connect
115
+ # APPLE_API_ISSUER_ID — Issuer ID from App Store Connect API keys page
116
+ # APPLE_API_KEY_ID — Key ID from App Store Connect API keys page
117
+ # MATCH_PASSWORD — Encryption passphrase for Fastlane Match certificates
118
+ #
119
+ # Placeholders:
120
+ # {{scheme}} — Replace with your Xcode scheme name (e.g. MyApp)
@@ -0,0 +1,3 @@
1
+ import type { ApiContractReport } from '../../types/index.js';
2
+ export declare function validateGraphQLSchema(schemaPath: string, projectPath: string): Promise<ApiContractReport>;
3
+ //# sourceMappingURL=graphql-schema-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql-schema-validator.d.ts","sourceRoot":"","sources":["../../../src/engine/api-validation/graphql-schema-validator.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,iBAAiB,EAIlB,MAAM,sBAAsB,CAAC;AAuF9B,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,iBAAiB,CAAC,CAgD5B"}
@@ -0,0 +1,134 @@
1
+ // engine/api-validation/graphql-schema-validator.ts — Validate GraphQL schema vs resolvers (SPEC-322)
2
+ import { readFile } from 'node:fs/promises';
3
+ import { glob } from 'glob';
4
+ // ---------------------------------------------------------------------------
5
+ // GraphQL SDL parser (minimal — extracts Query/Mutation/Subscription fields)
6
+ // ---------------------------------------------------------------------------
7
+ const OPERATION_TYPE_REGEX = /type\s+(Query|Mutation|Subscription)\s*\{([^}]+)\}/gs;
8
+ const FIELD_NAME_REGEX = /^\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*(?:\([^)]*\))?\s*:/m;
9
+ function parseGraphQLOperations(sdl) {
10
+ const operations = [];
11
+ let typeMatch;
12
+ const typeRegex = new RegExp(OPERATION_TYPE_REGEX.source, OPERATION_TYPE_REGEX.flags);
13
+ while ((typeMatch = typeRegex.exec(sdl)) !== null) {
14
+ const kind = typeMatch[1];
15
+ const body = typeMatch[2] ?? '';
16
+ const lines = body.split('\n');
17
+ for (const line of lines) {
18
+ const fieldMatch = FIELD_NAME_REGEX.exec(line);
19
+ if (fieldMatch?.[1]) {
20
+ operations.push({ name: fieldMatch[1], kind });
21
+ }
22
+ }
23
+ }
24
+ return operations;
25
+ }
26
+ // ---------------------------------------------------------------------------
27
+ // Resolver scanner
28
+ // ---------------------------------------------------------------------------
29
+ const RESOLVER_PATTERNS = [
30
+ // Apollo: { Query: { resolverName() } }
31
+ /['"`]([a-zA-Z_][a-zA-Z0-9_]*)['"`]\s*:\s*(?:async\s+)?(?:function|\(|[a-zA-Z_])/g,
32
+ // Direct assignment: const resolverNameResolver = async () =>
33
+ /(?:const|let)\s+([a-zA-Z_][a-zA-Z0-9_]*Resolver)\s*=/g,
34
+ // Object method shorthand: resolverName(parent, args, ctx)
35
+ /\b([a-zA-Z_][a-zA-Z0-9_]*)\s*\(\s*(?:parent|root|_),?\s*(?:args|_args)/g,
36
+ ];
37
+ async function scanSourceFilesForResolvers(projectPath) {
38
+ const patterns = [
39
+ `${projectPath}/**/*.ts`,
40
+ `${projectPath}/**/*.tsx`,
41
+ `${projectPath}/**/*.js`,
42
+ `${projectPath}/**/*.jsx`,
43
+ ];
44
+ const ignores = ['**/node_modules/**', '**/dist/**', '**/.next/**', '**/build/**'];
45
+ const resolvers = [];
46
+ const seen = new Set();
47
+ const files = await glob(patterns, { ignore: ignores });
48
+ for (const file of files) {
49
+ const content = await readFile(file, 'utf-8').catch(() => '');
50
+ if (!content) {
51
+ continue;
52
+ }
53
+ if (!content.includes('resolver') &&
54
+ !content.includes('Query') &&
55
+ !content.includes('Mutation')) {
56
+ continue;
57
+ }
58
+ for (const pattern of RESOLVER_PATTERNS) {
59
+ const re = new RegExp(pattern.source, pattern.flags);
60
+ let match;
61
+ while ((match = re.exec(content)) !== null) {
62
+ const name = match[1];
63
+ if (name && !seen.has(name)) {
64
+ seen.add(name);
65
+ resolvers.push({ name, file });
66
+ }
67
+ }
68
+ }
69
+ }
70
+ return resolvers;
71
+ }
72
+ // ---------------------------------------------------------------------------
73
+ // Main validator
74
+ // ---------------------------------------------------------------------------
75
+ export async function validateGraphQLSchema(schemaPath, projectPath) {
76
+ const sdl = await readFile(schemaPath, 'utf-8');
77
+ const operations = parseGraphQLOperations(sdl);
78
+ const resolvers = await scanSourceFilesForResolvers(projectPath);
79
+ const resolverNames = new Set(resolvers.map((r) => r.name));
80
+ const missingEndpoints = [];
81
+ const undocumentedEndpoints = [];
82
+ for (const op of operations) {
83
+ if (!resolverNames.has(op.name)) {
84
+ missingEndpoints.push({
85
+ path: `${op.kind}.${op.name}`,
86
+ method: op.kind,
87
+ severity: 'critical',
88
+ message: `GraphQL ${op.kind} "${op.name}" is defined in the schema but no resolver implementation was detected in the project source files.`,
89
+ });
90
+ }
91
+ }
92
+ const opNames = new Set(operations.map((o) => o.name));
93
+ for (const resolver of resolvers) {
94
+ if (!opNames.has(resolver.name) && isLikelyOperationResolver(resolver.name)) {
95
+ undocumentedEndpoints.push({
96
+ path: resolver.name,
97
+ method: 'resolver',
98
+ severity: 'info',
99
+ message: `Resolver "${resolver.name}" found in ${resolver.file} does not correspond to any operation in the GraphQL schema.`,
100
+ });
101
+ }
102
+ }
103
+ const findings = [...missingEndpoints, ...undocumentedEndpoints];
104
+ return {
105
+ contractFormat: 'graphql',
106
+ contractVersion: 'SDL',
107
+ contractTitle: 'GraphQL Schema',
108
+ totalContractEndpoints: operations.length,
109
+ totalImplEndpoints: resolvers.length,
110
+ missingEndpoints,
111
+ undocumentedEndpoints,
112
+ schemaDrift: [],
113
+ breakingChanges: [],
114
+ findings,
115
+ summary: buildSummary(missingEndpoints.length, undocumentedEndpoints.length),
116
+ };
117
+ }
118
+ function isLikelyOperationResolver(name) {
119
+ return /^(?:get|create|update|delete|list|find|add|remove|fetch|load|save|set)[A-Z]/.test(name);
120
+ }
121
+ function buildSummary(missing, undocumented) {
122
+ if (missing === 0 && undocumented === 0) {
123
+ return 'GraphQL schema and resolver implementations are fully aligned.';
124
+ }
125
+ const parts = [];
126
+ if (missing > 0) {
127
+ parts.push(`${missing} operation(s) in schema have no resolver implementation`);
128
+ }
129
+ if (undocumented > 0) {
130
+ parts.push(`${undocumented} resolver(s) found that are not in the schema`);
131
+ }
132
+ return parts.join('; ') + '.';
133
+ }
134
+ //# sourceMappingURL=graphql-schema-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql-schema-validator.js","sourceRoot":"","sources":["../../../src/engine/api-validation/graphql-schema-validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { validateOpenApiContract } from './openapi-impl-validator.js';
2
+ export { validateGraphQLSchema } from './graphql-schema-validator.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/engine/api-validation/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC"}
@@ -0,0 +1,4 @@
1
+ // engine/api-validation/index.ts — Barrel export (SPEC-322)
2
+ export { validateOpenApiContract } from './openapi-impl-validator.js';
3
+ export { validateGraphQLSchema } from './graphql-schema-validator.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engine/api-validation/index.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAE5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ApiContractReport } from '../../types/index.js';
2
+ export declare function validateOpenApiContract(contractPath: string, projectPath: string): Promise<ApiContractReport>;
3
+ //# sourceMappingURL=openapi-impl-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openapi-impl-validator.d.ts","sourceRoot":"","sources":["../../../src/engine/api-validation/openapi-impl-validator.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,iBAAiB,EAIlB,MAAM,sBAAsB,CAAC;AAsJ9B,wBAAsB,uBAAuB,CAC3C,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,iBAAiB,CAAC,CA6D5B"}