specstar 0.10.0__tar.gz

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 (473) hide show
  1. specstar-0.10.0/.gitignore +39 -0
  2. specstar-0.10.0/LICENSE +21 -0
  3. specstar-0.10.0/PKG-INFO +424 -0
  4. specstar-0.10.0/README.md +276 -0
  5. specstar-0.10.0/pyproject.toml +211 -0
  6. specstar-0.10.0/specstar/__init__.py +68 -0
  7. specstar-0.10.0/specstar/backend.py +646 -0
  8. specstar-0.10.0/specstar/cli/__init__.py +0 -0
  9. specstar-0.10.0/specstar/cli/__main__.py +12 -0
  10. specstar-0.10.0/specstar/cli/build.py +408 -0
  11. specstar-0.10.0/specstar/cli/config.py +65 -0
  12. specstar-0.10.0/specstar/crud/__init__.py +0 -0
  13. specstar-0.10.0/specstar/crud/async_job_builder.py +302 -0
  14. specstar-0.10.0/specstar/crud/async_jobs.py +505 -0
  15. specstar-0.10.0/specstar/crud/core.py +2913 -0
  16. specstar-0.10.0/specstar/crud/custom_actions.py +44 -0
  17. specstar-0.10.0/specstar/crud/openapi_builder.py +915 -0
  18. specstar-0.10.0/specstar/crud/qb_parser.py +366 -0
  19. specstar-0.10.0/specstar/crud/ref_manager.py +107 -0
  20. specstar-0.10.0/specstar/crud/route_templates/__init__.py +0 -0
  21. specstar-0.10.0/specstar/crud/route_templates/backup.py +254 -0
  22. specstar-0.10.0/specstar/crud/route_templates/basic.py +131 -0
  23. specstar-0.10.0/specstar/crud/route_templates/blob.py +302 -0
  24. specstar-0.10.0/specstar/crud/route_templates/create.py +77 -0
  25. specstar-0.10.0/specstar/crud/route_templates/delete.py +325 -0
  26. specstar-0.10.0/specstar/crud/route_templates/dependency_provider.py +94 -0
  27. specstar-0.10.0/specstar/crud/route_templates/exception_handlers.py +107 -0
  28. specstar-0.10.0/specstar/crud/route_templates/get.py +764 -0
  29. specstar-0.10.0/specstar/crud/route_templates/graphql.py +746 -0
  30. specstar-0.10.0/specstar/crud/route_templates/job_logs.py +59 -0
  31. specstar-0.10.0/specstar/crud/route_templates/migrate.py +479 -0
  32. specstar-0.10.0/specstar/crud/route_templates/patch.py +153 -0
  33. specstar-0.10.0/specstar/crud/route_templates/query_inputs.py +398 -0
  34. specstar-0.10.0/specstar/crud/route_templates/rerun.py +82 -0
  35. specstar-0.10.0/specstar/crud/route_templates/responses.py +138 -0
  36. specstar-0.10.0/specstar/crud/route_templates/search.py +514 -0
  37. specstar-0.10.0/specstar/crud/route_templates/switch.py +82 -0
  38. specstar-0.10.0/specstar/crud/route_templates/update.py +108 -0
  39. specstar-0.10.0/specstar/errors.py +35 -0
  40. specstar-0.10.0/specstar/events.py +1266 -0
  41. specstar-0.10.0/specstar/events.pyi +812 -0
  42. specstar-0.10.0/specstar/message_queue/__init__.py +30 -0
  43. specstar-0.10.0/specstar/message_queue/basic.py +462 -0
  44. specstar-0.10.0/specstar/message_queue/celery_queue.py +492 -0
  45. specstar-0.10.0/specstar/message_queue/context.py +160 -0
  46. specstar-0.10.0/specstar/message_queue/heartbeat.py +84 -0
  47. specstar-0.10.0/specstar/message_queue/log_flush.py +84 -0
  48. specstar-0.10.0/specstar/message_queue/rabbitmq.py +642 -0
  49. specstar-0.10.0/specstar/message_queue/simple.py +414 -0
  50. specstar-0.10.0/specstar/permission/__init__.py +42 -0
  51. specstar-0.10.0/specstar/permission/acl.py +224 -0
  52. specstar-0.10.0/specstar/permission/action.py +74 -0
  53. specstar-0.10.0/specstar/permission/checker.py +49 -0
  54. specstar-0.10.0/specstar/permission/composite.py +71 -0
  55. specstar-0.10.0/specstar/permission/data_based.py +69 -0
  56. specstar-0.10.0/specstar/permission/meta_based.py +53 -0
  57. specstar-0.10.0/specstar/permission/rbac.py +238 -0
  58. specstar-0.10.0/specstar/permission/simple.py +27 -0
  59. specstar-0.10.0/specstar/permission/store_backed.py +110 -0
  60. specstar-0.10.0/specstar/query.py +1421 -0
  61. specstar-0.10.0/specstar/query_types.py +226 -0
  62. specstar-0.10.0/specstar/resource_manager/__init__.py +51 -0
  63. specstar-0.10.0/specstar/resource_manager/basic.py +1471 -0
  64. specstar-0.10.0/specstar/resource_manager/binary_processor.py +392 -0
  65. specstar-0.10.0/specstar/resource_manager/blob_store/__init__.py +0 -0
  66. specstar-0.10.0/specstar/resource_manager/blob_store/s3.py +596 -0
  67. specstar-0.10.0/specstar/resource_manager/blob_store/simple.py +745 -0
  68. specstar-0.10.0/specstar/resource_manager/constraint_handler.py +381 -0
  69. specstar-0.10.0/specstar/resource_manager/constraint_lifecycle.py +75 -0
  70. specstar-0.10.0/specstar/resource_manager/core.py +2741 -0
  71. specstar-0.10.0/specstar/resource_manager/dump_format.py +140 -0
  72. specstar-0.10.0/specstar/resource_manager/meta_store/__init__.py +0 -0
  73. specstar-0.10.0/specstar/resource_manager/meta_store/df.py +151 -0
  74. specstar-0.10.0/specstar/resource_manager/meta_store/fast_slow.py +91 -0
  75. specstar-0.10.0/specstar/resource_manager/meta_store/postgres.py +733 -0
  76. specstar-0.10.0/specstar/resource_manager/meta_store/redis.py +97 -0
  77. specstar-0.10.0/specstar/resource_manager/meta_store/simple.py +115 -0
  78. specstar-0.10.0/specstar/resource_manager/meta_store/sqlalchemy.py +1139 -0
  79. specstar-0.10.0/specstar/resource_manager/meta_store/sqlite3.py +963 -0
  80. specstar-0.10.0/specstar/resource_manager/partial.py +370 -0
  81. specstar-0.10.0/specstar/resource_manager/permission.py +0 -0
  82. specstar-0.10.0/specstar/resource_manager/pydantic_converter.py +674 -0
  83. specstar-0.10.0/specstar/resource_manager/resource_store/__init__.py +27 -0
  84. specstar-0.10.0/specstar/resource_manager/resource_store/cache.py +247 -0
  85. specstar-0.10.0/specstar/resource_manager/resource_store/cached_s3.py +127 -0
  86. specstar-0.10.0/specstar/resource_manager/resource_store/etag_cached_s3.py +282 -0
  87. specstar-0.10.0/specstar/resource_manager/resource_store/mq_cached_s3.py +263 -0
  88. specstar-0.10.0/specstar/resource_manager/resource_store/postgres.py +390 -0
  89. specstar-0.10.0/specstar/resource_manager/resource_store/s3.py +412 -0
  90. specstar-0.10.0/specstar/resource_manager/resource_store/simple.py +281 -0
  91. specstar-0.10.0/specstar/resource_manager/storage_factory.py +505 -0
  92. specstar-0.10.0/specstar/resource_manager/unique_handler.py +136 -0
  93. specstar-0.10.0/specstar/schema.py +602 -0
  94. specstar-0.10.0/specstar/types.py +2134 -0
  95. specstar-0.10.0/specstar/util/__init__.py +0 -0
  96. specstar-0.10.0/specstar/util/datetime_utils.py +36 -0
  97. specstar-0.10.0/specstar/util/naming.py +88 -0
  98. specstar-0.10.0/specstar/util/type_utils.py +763 -0
  99. specstar-0.10.0/web/app/src/specstar/generated/api/backupApi.ts +187 -0
  100. specstar-0.10.0/web/app/src/specstar/generated/api/blobApi.ts +82 -0
  101. specstar-0.10.0/web/app/src/specstar/generated/api/characterApi.ts +73 -0
  102. specstar-0.10.0/web/app/src/specstar/generated/api/create-new-character2-jobApi.ts +55 -0
  103. specstar-0.10.0/web/app/src/specstar/generated/api/create-new-character4-jobApi.ts +55 -0
  104. specstar-0.10.0/web/app/src/specstar/generated/api/equipmentApi.ts +47 -0
  105. specstar-0.10.0/web/app/src/specstar/generated/api/game-eventApi.ts +52 -0
  106. specstar-0.10.0/web/app/src/specstar/generated/api/guildApi.ts +47 -0
  107. specstar-0.10.0/web/app/src/specstar/generated/api/index.ts +15 -0
  108. specstar-0.10.0/web/app/src/specstar/generated/api/migrateApi.ts +151 -0
  109. specstar-0.10.0/web/app/src/specstar/generated/api/new-char1-jobApi.ts +52 -0
  110. specstar-0.10.0/web/app/src/specstar/generated/api/pet-jobApi.ts +59 -0
  111. specstar-0.10.0/web/app/src/specstar/generated/api/petApi.ts +47 -0
  112. specstar-0.10.0/web/app/src/specstar/generated/api/questApi.ts +47 -0
  113. specstar-0.10.0/web/app/src/specstar/generated/api/skillApi.ts +47 -0
  114. specstar-0.10.0/web/app/src/specstar/generated/resources.ts +2801 -0
  115. specstar-0.10.0/web/app/src/specstar/generated/types.ts +36706 -0
  116. specstar-0.10.0/web/app/src/specstar/lib/barrel-exports.test.ts +26 -0
  117. specstar-0.10.0/web/app/src/specstar/lib/client.test.ts +90 -0
  118. specstar-0.10.0/web/app/src/specstar/lib/client.ts +81 -0
  119. specstar-0.10.0/web/app/src/specstar/lib/components/BackupRestore.test.tsx +215 -0
  120. specstar-0.10.0/web/app/src/specstar/lib/components/BackupRestore.tsx +376 -0
  121. specstar-0.10.0/web/app/src/specstar/lib/components/Dashboard.test.tsx +119 -0
  122. specstar-0.10.0/web/app/src/specstar/lib/components/Dashboard.tsx +96 -0
  123. specstar-0.10.0/web/app/src/specstar/lib/components/JobTable.tsx +5 -0
  124. specstar-0.10.0/web/app/src/specstar/lib/components/MigrationStatus.test.tsx +712 -0
  125. specstar-0.10.0/web/app/src/specstar/lib/components/MigrationStatus.tsx +699 -0
  126. specstar-0.10.0/web/app/src/specstar/lib/components/PendingJobsAccordion.tsx +5 -0
  127. specstar-0.10.0/web/app/src/specstar/lib/components/ResourceCreate.tsx +5 -0
  128. specstar-0.10.0/web/app/src/specstar/lib/components/ResourceDetail.tsx +5 -0
  129. specstar-0.10.0/web/app/src/specstar/lib/components/ResourceTable.tsx +27 -0
  130. specstar-0.10.0/web/app/src/specstar/lib/components/common/RefLink.test.tsx +297 -0
  131. specstar-0.10.0/web/app/src/specstar/lib/components/common/RefLink.tsx +274 -0
  132. specstar-0.10.0/web/app/src/specstar/lib/components/common/ResourceIdCell.test.tsx +46 -0
  133. specstar-0.10.0/web/app/src/specstar/lib/components/common/ResourceIdCell.tsx +42 -0
  134. specstar-0.10.0/web/app/src/specstar/lib/components/common/RevisionIdCell.test.tsx +63 -0
  135. specstar-0.10.0/web/app/src/specstar/lib/components/common/RevisionIdCell.tsx +77 -0
  136. specstar-0.10.0/web/app/src/specstar/lib/components/common/TimeDisplay.test.tsx +94 -0
  137. specstar-0.10.0/web/app/src/specstar/lib/components/common/TimeDisplay.tsx +92 -0
  138. specstar-0.10.0/web/app/src/specstar/lib/components/detail/MetadataSection.test.tsx +101 -0
  139. specstar-0.10.0/web/app/src/specstar/lib/components/detail/MetadataSection.tsx +96 -0
  140. specstar-0.10.0/web/app/src/specstar/lib/components/detail/ResourceDetail.test.tsx +1229 -0
  141. specstar-0.10.0/web/app/src/specstar/lib/components/detail/ResourceDetail.tsx +771 -0
  142. specstar-0.10.0/web/app/src/specstar/lib/components/detail/RevisionHistorySection.test.tsx +372 -0
  143. specstar-0.10.0/web/app/src/specstar/lib/components/detail/RevisionHistorySection.tsx +449 -0
  144. specstar-0.10.0/web/app/src/specstar/lib/components/detail/RevisionTreeTimeline.test.tsx +117 -0
  145. specstar-0.10.0/web/app/src/specstar/lib/components/detail/RevisionTreeTimeline.tsx +377 -0
  146. specstar-0.10.0/web/app/src/specstar/lib/components/field/CellFieldRenderer/CellFieldRenderer.test.ts +423 -0
  147. specstar-0.10.0/web/app/src/specstar/lib/components/field/CellFieldRenderer/helpers.test.ts +247 -0
  148. specstar-0.10.0/web/app/src/specstar/lib/components/field/CellFieldRenderer/helpers.tsx +207 -0
  149. specstar-0.10.0/web/app/src/specstar/lib/components/field/CellFieldRenderer/index.tsx +212 -0
  150. specstar-0.10.0/web/app/src/specstar/lib/components/field/DetailFieldRenderer/ArrayFieldDisplay.tsx +55 -0
  151. specstar-0.10.0/web/app/src/specstar/lib/components/field/DetailFieldRenderer/BinaryFieldDisplay.test.ts +22 -0
  152. specstar-0.10.0/web/app/src/specstar/lib/components/field/DetailFieldRenderer/BinaryFieldDisplay.test.tsx +76 -0
  153. specstar-0.10.0/web/app/src/specstar/lib/components/field/DetailFieldRenderer/BinaryFieldDisplay.tsx +74 -0
  154. specstar-0.10.0/web/app/src/specstar/lib/components/field/DetailFieldRenderer/CollapsibleJson.tsx +73 -0
  155. specstar-0.10.0/web/app/src/specstar/lib/components/field/DetailFieldRenderer/DetailFieldRenderer.test.tsx +657 -0
  156. specstar-0.10.0/web/app/src/specstar/lib/components/field/DetailFieldRenderer/JobFields.test.ts +52 -0
  157. specstar-0.10.0/web/app/src/specstar/lib/components/field/DetailFieldRenderer/StructuralUnionFieldDisplay.test.tsx +506 -0
  158. specstar-0.10.0/web/app/src/specstar/lib/components/field/DetailFieldRenderer/StructuralUnionFieldDisplay.tsx +244 -0
  159. specstar-0.10.0/web/app/src/specstar/lib/components/field/DetailFieldRenderer/UnionFieldDisplay.tsx +49 -0
  160. specstar-0.10.0/web/app/src/specstar/lib/components/field/DetailFieldRenderer/index.tsx +271 -0
  161. specstar-0.10.0/web/app/src/specstar/lib/components/field/FormFieldRenderer/ArrayFieldRenderer.test.tsx +409 -0
  162. specstar-0.10.0/web/app/src/specstar/lib/components/field/FormFieldRenderer/ArrayFieldRenderer.tsx +230 -0
  163. specstar-0.10.0/web/app/src/specstar/lib/components/field/FormFieldRenderer/BinaryArrayFieldRenderer.test.tsx +124 -0
  164. specstar-0.10.0/web/app/src/specstar/lib/components/field/FormFieldRenderer/BinaryArrayFieldRenderer.tsx +88 -0
  165. specstar-0.10.0/web/app/src/specstar/lib/components/field/FormFieldRenderer/BinaryFieldEditor.test.tsx +140 -0
  166. specstar-0.10.0/web/app/src/specstar/lib/components/field/FormFieldRenderer/BinaryFieldEditor.tsx +121 -0
  167. specstar-0.10.0/web/app/src/specstar/lib/components/field/FormFieldRenderer/FieldRenderer.test.tsx +549 -0
  168. specstar-0.10.0/web/app/src/specstar/lib/components/field/FormFieldRenderer/JsonEditor.test.tsx +132 -0
  169. specstar-0.10.0/web/app/src/specstar/lib/components/field/FormFieldRenderer/JsonEditor.tsx +116 -0
  170. specstar-0.10.0/web/app/src/specstar/lib/components/field/FormFieldRenderer/MarkdownEditor.test.tsx +110 -0
  171. specstar-0.10.0/web/app/src/specstar/lib/components/field/FormFieldRenderer/MarkdownEditor.tsx +110 -0
  172. specstar-0.10.0/web/app/src/specstar/lib/components/field/FormFieldRenderer/RefSelect.test.tsx +310 -0
  173. specstar-0.10.0/web/app/src/specstar/lib/components/field/FormFieldRenderer/RefSelect.tsx +431 -0
  174. specstar-0.10.0/web/app/src/specstar/lib/components/field/FormFieldRenderer/RefTableSelectModal.test.tsx +280 -0
  175. specstar-0.10.0/web/app/src/specstar/lib/components/field/FormFieldRenderer/RefTableSelectModal.tsx +242 -0
  176. specstar-0.10.0/web/app/src/specstar/lib/components/field/FormFieldRenderer/UnionFieldRenderer.test.tsx +1771 -0
  177. specstar-0.10.0/web/app/src/specstar/lib/components/field/FormFieldRenderer/UnionFieldRenderer.tsx +819 -0
  178. specstar-0.10.0/web/app/src/specstar/lib/components/field/FormFieldRenderer/index.tsx +345 -0
  179. specstar-0.10.0/web/app/src/specstar/lib/components/field/resolveFieldKind.test.ts +303 -0
  180. specstar-0.10.0/web/app/src/specstar/lib/components/field/resolveFieldKind.ts +153 -0
  181. specstar-0.10.0/web/app/src/specstar/lib/components/form/ResourceCreate.test.tsx +617 -0
  182. specstar-0.10.0/web/app/src/specstar/lib/components/form/ResourceCreate.tsx +236 -0
  183. specstar-0.10.0/web/app/src/specstar/lib/components/form/ResourceForm.test.tsx +602 -0
  184. specstar-0.10.0/web/app/src/specstar/lib/components/form/ResourceForm.tsx +302 -0
  185. specstar-0.10.0/web/app/src/specstar/lib/components/form/useResourceForm.test.ts +628 -0
  186. specstar-0.10.0/web/app/src/specstar/lib/components/form/useResourceForm.test.tsx +178 -0
  187. specstar-0.10.0/web/app/src/specstar/lib/components/form/useResourceForm.ts +699 -0
  188. specstar-0.10.0/web/app/src/specstar/lib/components/job/JobArtifactSection.test.ts +193 -0
  189. specstar-0.10.0/web/app/src/specstar/lib/components/job/JobArtifactSection.test.tsx +171 -0
  190. specstar-0.10.0/web/app/src/specstar/lib/components/job/JobArtifactSection.tsx +113 -0
  191. specstar-0.10.0/web/app/src/specstar/lib/components/job/JobFieldsSection.test.tsx +121 -0
  192. specstar-0.10.0/web/app/src/specstar/lib/components/job/JobFieldsSection.tsx +40 -0
  193. specstar-0.10.0/web/app/src/specstar/lib/components/job/JobLogsPanel.test.tsx +64 -0
  194. specstar-0.10.0/web/app/src/specstar/lib/components/job/JobLogsPanel.tsx +94 -0
  195. specstar-0.10.0/web/app/src/specstar/lib/components/job/JobStatusSection.test.tsx +164 -0
  196. specstar-0.10.0/web/app/src/specstar/lib/components/job/JobStatusSection.tsx +146 -0
  197. specstar-0.10.0/web/app/src/specstar/lib/components/job/JobTable.test.tsx +192 -0
  198. specstar-0.10.0/web/app/src/specstar/lib/components/job/JobTable.tsx +164 -0
  199. specstar-0.10.0/web/app/src/specstar/lib/components/job/PendingJobsAccordion.test.tsx +277 -0
  200. specstar-0.10.0/web/app/src/specstar/lib/components/job/PendingJobsAccordion.tsx +139 -0
  201. specstar-0.10.0/web/app/src/specstar/lib/components/job/PendingUpdateJobsAccordion.test.tsx +112 -0
  202. specstar-0.10.0/web/app/src/specstar/lib/components/job/PendingUpdateJobsAccordion.tsx +144 -0
  203. specstar-0.10.0/web/app/src/specstar/lib/components/table/AdvancedSearchPanel.test.tsx +347 -0
  204. specstar-0.10.0/web/app/src/specstar/lib/components/table/AdvancedSearchPanel.tsx +385 -0
  205. specstar-0.10.0/web/app/src/specstar/lib/components/table/MetaSearchForm.test.tsx +227 -0
  206. specstar-0.10.0/web/app/src/specstar/lib/components/table/MetaSearchForm.tsx +268 -0
  207. specstar-0.10.0/web/app/src/specstar/lib/components/table/MultiResourceTable.test.tsx +297 -0
  208. specstar-0.10.0/web/app/src/specstar/lib/components/table/MultiResourceTable.tsx +285 -0
  209. specstar-0.10.0/web/app/src/specstar/lib/components/table/ResourceTable.test.tsx +356 -0
  210. specstar-0.10.0/web/app/src/specstar/lib/components/table/ResourceTable.tsx +536 -0
  211. specstar-0.10.0/web/app/src/specstar/lib/components/table/SearchForm.component.test.tsx +321 -0
  212. specstar-0.10.0/web/app/src/specstar/lib/components/table/SearchForm.test.ts +115 -0
  213. specstar-0.10.0/web/app/src/specstar/lib/components/table/SearchForm.tsx +376 -0
  214. specstar-0.10.0/web/app/src/specstar/lib/components/table/buildColumns.test.ts +774 -0
  215. specstar-0.10.0/web/app/src/specstar/lib/components/table/buildColumns.ts +312 -0
  216. specstar-0.10.0/web/app/src/specstar/lib/components/table/index.ts +68 -0
  217. specstar-0.10.0/web/app/src/specstar/lib/components/table/searchFieldUtils.test.ts +377 -0
  218. specstar-0.10.0/web/app/src/specstar/lib/components/table/searchFieldUtils.ts +139 -0
  219. specstar-0.10.0/web/app/src/specstar/lib/components/table/searchUtils.test.ts +392 -0
  220. specstar-0.10.0/web/app/src/specstar/lib/components/table/searchUtils.ts +196 -0
  221. specstar-0.10.0/web/app/src/specstar/lib/components/table/types.test.ts +63 -0
  222. specstar-0.10.0/web/app/src/specstar/lib/components/table/types.ts +163 -0
  223. specstar-0.10.0/web/app/src/specstar/lib/components/table/utils.test.ts +1201 -0
  224. specstar-0.10.0/web/app/src/specstar/lib/components/table/utils.ts +722 -0
  225. specstar-0.10.0/web/app/src/specstar/lib/dependency-check.test.ts +43 -0
  226. specstar-0.10.0/web/app/src/specstar/lib/hooks/index.ts +77 -0
  227. specstar-0.10.0/web/app/src/specstar/lib/hooks/primitives.test.ts +182 -0
  228. specstar-0.10.0/web/app/src/specstar/lib/hooks/primitives.ts +84 -0
  229. specstar-0.10.0/web/app/src/specstar/lib/hooks/queryKeys.test.ts +151 -0
  230. specstar-0.10.0/web/app/src/specstar/lib/hooks/queryKeys.ts +56 -0
  231. specstar-0.10.0/web/app/src/specstar/lib/hooks/test-helpers.ts +69 -0
  232. specstar-0.10.0/web/app/src/specstar/lib/hooks/types.ts +47 -0
  233. specstar-0.10.0/web/app/src/specstar/lib/hooks/useAdvancedSearch.test.ts +638 -0
  234. specstar-0.10.0/web/app/src/specstar/lib/hooks/useAdvancedSearch.ts +423 -0
  235. specstar-0.10.0/web/app/src/specstar/lib/hooks/useBlobUpload.test.ts +682 -0
  236. specstar-0.10.0/web/app/src/specstar/lib/hooks/useBlobUpload.ts +386 -0
  237. specstar-0.10.0/web/app/src/specstar/lib/hooks/useCreateResource.test.ts +249 -0
  238. specstar-0.10.0/web/app/src/specstar/lib/hooks/useCreateResource.ts +89 -0
  239. specstar-0.10.0/web/app/src/specstar/lib/hooks/useDeleteResource.test.ts +216 -0
  240. specstar-0.10.0/web/app/src/specstar/lib/hooks/useDeleteResource.ts +138 -0
  241. specstar-0.10.0/web/app/src/specstar/lib/hooks/useFieldDepth.hook.test.ts +97 -0
  242. specstar-0.10.0/web/app/src/specstar/lib/hooks/useFieldDepth.test.ts +147 -0
  243. specstar-0.10.0/web/app/src/specstar/lib/hooks/useFieldDepth.ts +111 -0
  244. specstar-0.10.0/web/app/src/specstar/lib/hooks/useMultiResourceList.test.ts +327 -0
  245. specstar-0.10.0/web/app/src/specstar/lib/hooks/useMultiResourceList.ts +177 -0
  246. specstar-0.10.0/web/app/src/specstar/lib/hooks/useRerunResource.test.ts +182 -0
  247. specstar-0.10.0/web/app/src/specstar/lib/hooks/useRerunResource.ts +91 -0
  248. specstar-0.10.0/web/app/src/specstar/lib/hooks/useResourceDetail.test.ts +479 -0
  249. specstar-0.10.0/web/app/src/specstar/lib/hooks/useResourceDetail.ts +207 -0
  250. specstar-0.10.0/web/app/src/specstar/lib/hooks/useResourceList.test.ts +239 -0
  251. specstar-0.10.0/web/app/src/specstar/lib/hooks/useResourceList.ts +93 -0
  252. specstar-0.10.0/web/app/src/specstar/lib/hooks/useRestoreResource.test.ts +157 -0
  253. specstar-0.10.0/web/app/src/specstar/lib/hooks/useRestoreResource.ts +83 -0
  254. specstar-0.10.0/web/app/src/specstar/lib/hooks/useSwitchRevision.test.ts +172 -0
  255. specstar-0.10.0/web/app/src/specstar/lib/hooks/useSwitchRevision.ts +89 -0
  256. specstar-0.10.0/web/app/src/specstar/lib/hooks/useUpdateResource.test.ts +177 -0
  257. specstar-0.10.0/web/app/src/specstar/lib/hooks/useUpdateResource.ts +92 -0
  258. specstar-0.10.0/web/app/src/specstar/lib/resourceCustomization.ts +20 -0
  259. specstar-0.10.0/web/app/src/specstar/lib/resources.test.ts +296 -0
  260. specstar-0.10.0/web/app/src/specstar/lib/resources.ts +537 -0
  261. specstar-0.10.0/web/app/src/specstar/lib/types/revision.ts +11 -0
  262. specstar-0.10.0/web/app/src/specstar/lib/utils/componentConfig.test.ts +428 -0
  263. specstar-0.10.0/web/app/src/specstar/lib/utils/customization.test.ts +103 -0
  264. specstar-0.10.0/web/app/src/specstar/lib/utils/customization.ts +55 -0
  265. specstar-0.10.0/web/app/src/specstar/lib/utils/displayHelpers.test.tsx +114 -0
  266. specstar-0.10.0/web/app/src/specstar/lib/utils/displayHelpers.tsx +54 -0
  267. specstar-0.10.0/web/app/src/specstar/lib/utils/errorNotification.test.ts +173 -0
  268. specstar-0.10.0/web/app/src/specstar/lib/utils/errorNotification.ts +103 -0
  269. specstar-0.10.0/web/app/src/specstar/lib/utils/formUtils/converters.test.ts +228 -0
  270. specstar-0.10.0/web/app/src/specstar/lib/utils/formUtils/converters.ts +164 -0
  271. specstar-0.10.0/web/app/src/specstar/lib/utils/formUtils/depthTransition.test.ts +685 -0
  272. specstar-0.10.0/web/app/src/specstar/lib/utils/formUtils/depthTransition.ts +277 -0
  273. specstar-0.10.0/web/app/src/specstar/lib/utils/formUtils/fieldGrouping.test.ts +432 -0
  274. specstar-0.10.0/web/app/src/specstar/lib/utils/formUtils/fieldGrouping.ts +237 -0
  275. specstar-0.10.0/web/app/src/specstar/lib/utils/formUtils/fieldTypeRegistry.test.ts +1470 -0
  276. specstar-0.10.0/web/app/src/specstar/lib/utils/formUtils/fieldTypeRegistry.ts +720 -0
  277. specstar-0.10.0/web/app/src/specstar/lib/utils/formUtils/index.ts +92 -0
  278. specstar-0.10.0/web/app/src/specstar/lib/utils/formUtils/paths.test.ts +93 -0
  279. specstar-0.10.0/web/app/src/specstar/lib/utils/formUtils/paths.ts +47 -0
  280. specstar-0.10.0/web/app/src/specstar/lib/utils/formUtils/transformers.test.ts +2005 -0
  281. specstar-0.10.0/web/app/src/specstar/lib/utils/formUtils/transformers.ts +512 -0
  282. specstar-0.10.0/web/app/src/specstar/lib/utils/formUtils/types.ts +22 -0
  283. specstar-0.10.0/web/app/src/specstar/lib/utils/formUtils/validators.test.ts +564 -0
  284. specstar-0.10.0/web/app/src/specstar/lib/utils/formUtils/validators.ts +265 -0
  285. specstar-0.10.0/web/app/src/specstar/lib/utils/payloadTruncation.test.ts +272 -0
  286. specstar-0.10.0/web/app/src/specstar/lib/utils/payloadTruncation.ts +159 -0
  287. specstar-0.10.0/web/app/src/specstar/lib/utils/resources.test.ts +220 -0
  288. specstar-0.10.0/web/app/src/specstar/lib/utils/revisionList.test.ts +164 -0
  289. specstar-0.10.0/web/app/src/specstar/lib/utils/revisionList.ts +51 -0
  290. specstar-0.10.0/web/app/src/specstar/lib/utils/revisionTree.test.ts +330 -0
  291. specstar-0.10.0/web/app/src/specstar/lib/utils/revisionTree.ts +306 -0
  292. specstar-0.10.0/web/app/src/specstar/lib/utils/virtualization.test.ts +32 -0
  293. specstar-0.10.0/web/app/src/specstar/lib/utils/virtualization.ts +19 -0
  294. specstar-0.10.0/web/app/src/specstar/types/api.ts +111 -0
  295. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/barrel-exports.test.ts +26 -0
  296. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/client.test.ts +90 -0
  297. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/client.ts +81 -0
  298. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/BackupRestore.test.tsx +215 -0
  299. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/BackupRestore.tsx +376 -0
  300. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/Dashboard.test.tsx +119 -0
  301. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/Dashboard.tsx +96 -0
  302. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/JobTable.tsx +5 -0
  303. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/MigrationStatus.test.tsx +712 -0
  304. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/MigrationStatus.tsx +699 -0
  305. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/PendingJobsAccordion.tsx +5 -0
  306. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/ResourceCreate.tsx +5 -0
  307. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/ResourceDetail.tsx +5 -0
  308. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/ResourceTable.tsx +27 -0
  309. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/common/RefLink.test.tsx +297 -0
  310. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/common/RefLink.tsx +274 -0
  311. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/common/ResourceIdCell.test.tsx +46 -0
  312. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/common/ResourceIdCell.tsx +42 -0
  313. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/common/RevisionIdCell.test.tsx +63 -0
  314. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/common/RevisionIdCell.tsx +77 -0
  315. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/common/TimeDisplay.test.tsx +94 -0
  316. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/common/TimeDisplay.tsx +92 -0
  317. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/detail/MetadataSection.test.tsx +101 -0
  318. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/detail/MetadataSection.tsx +96 -0
  319. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/detail/ResourceDetail.test.tsx +1229 -0
  320. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/detail/ResourceDetail.tsx +771 -0
  321. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/detail/RevisionHistorySection.test.tsx +372 -0
  322. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/detail/RevisionHistorySection.tsx +449 -0
  323. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/detail/RevisionTreeTimeline.test.tsx +117 -0
  324. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/detail/RevisionTreeTimeline.tsx +377 -0
  325. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/field/CellFieldRenderer/CellFieldRenderer.test.ts +423 -0
  326. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/field/CellFieldRenderer/helpers.test.ts +247 -0
  327. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/field/CellFieldRenderer/helpers.tsx +207 -0
  328. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/field/CellFieldRenderer/index.tsx +212 -0
  329. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/field/DetailFieldRenderer/ArrayFieldDisplay.tsx +55 -0
  330. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/field/DetailFieldRenderer/BinaryFieldDisplay.test.ts +22 -0
  331. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/field/DetailFieldRenderer/BinaryFieldDisplay.test.tsx +76 -0
  332. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/field/DetailFieldRenderer/BinaryFieldDisplay.tsx +74 -0
  333. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/field/DetailFieldRenderer/CollapsibleJson.tsx +73 -0
  334. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/field/DetailFieldRenderer/DetailFieldRenderer.test.tsx +657 -0
  335. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/field/DetailFieldRenderer/JobFields.test.ts +52 -0
  336. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/field/DetailFieldRenderer/StructuralUnionFieldDisplay.test.tsx +506 -0
  337. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/field/DetailFieldRenderer/StructuralUnionFieldDisplay.tsx +244 -0
  338. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/field/DetailFieldRenderer/UnionFieldDisplay.tsx +49 -0
  339. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/field/DetailFieldRenderer/index.tsx +271 -0
  340. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/field/FormFieldRenderer/ArrayFieldRenderer.test.tsx +409 -0
  341. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/field/FormFieldRenderer/ArrayFieldRenderer.tsx +230 -0
  342. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/field/FormFieldRenderer/BinaryArrayFieldRenderer.test.tsx +124 -0
  343. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/field/FormFieldRenderer/BinaryArrayFieldRenderer.tsx +88 -0
  344. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/field/FormFieldRenderer/BinaryFieldEditor.test.tsx +140 -0
  345. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/field/FormFieldRenderer/BinaryFieldEditor.tsx +121 -0
  346. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/field/FormFieldRenderer/FieldRenderer.test.tsx +549 -0
  347. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/field/FormFieldRenderer/JsonEditor.test.tsx +132 -0
  348. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/field/FormFieldRenderer/JsonEditor.tsx +116 -0
  349. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/field/FormFieldRenderer/MarkdownEditor.test.tsx +110 -0
  350. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/field/FormFieldRenderer/MarkdownEditor.tsx +110 -0
  351. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/field/FormFieldRenderer/RefSelect.test.tsx +310 -0
  352. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/field/FormFieldRenderer/RefSelect.tsx +431 -0
  353. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/field/FormFieldRenderer/RefTableSelectModal.test.tsx +280 -0
  354. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/field/FormFieldRenderer/RefTableSelectModal.tsx +242 -0
  355. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/field/FormFieldRenderer/UnionFieldRenderer.test.tsx +1771 -0
  356. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/field/FormFieldRenderer/UnionFieldRenderer.tsx +819 -0
  357. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/field/FormFieldRenderer/index.tsx +345 -0
  358. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/field/resolveFieldKind.test.ts +303 -0
  359. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/field/resolveFieldKind.ts +153 -0
  360. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/form/ResourceCreate.test.tsx +617 -0
  361. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/form/ResourceCreate.tsx +236 -0
  362. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/form/ResourceForm.test.tsx +602 -0
  363. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/form/ResourceForm.tsx +302 -0
  364. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/form/useResourceForm.test.ts +628 -0
  365. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/form/useResourceForm.test.tsx +178 -0
  366. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/form/useResourceForm.ts +699 -0
  367. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/job/JobArtifactSection.test.ts +193 -0
  368. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/job/JobArtifactSection.test.tsx +171 -0
  369. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/job/JobArtifactSection.tsx +113 -0
  370. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/job/JobFieldsSection.test.tsx +121 -0
  371. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/job/JobFieldsSection.tsx +40 -0
  372. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/job/JobLogsPanel.test.tsx +64 -0
  373. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/job/JobLogsPanel.tsx +94 -0
  374. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/job/JobStatusSection.test.tsx +164 -0
  375. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/job/JobStatusSection.tsx +146 -0
  376. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/job/JobTable.test.tsx +192 -0
  377. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/job/JobTable.tsx +164 -0
  378. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/job/PendingJobsAccordion.test.tsx +277 -0
  379. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/job/PendingJobsAccordion.tsx +139 -0
  380. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/job/PendingUpdateJobsAccordion.test.tsx +112 -0
  381. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/job/PendingUpdateJobsAccordion.tsx +144 -0
  382. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/table/AdvancedSearchPanel.test.tsx +347 -0
  383. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/table/AdvancedSearchPanel.tsx +385 -0
  384. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/table/MetaSearchForm.test.tsx +227 -0
  385. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/table/MetaSearchForm.tsx +268 -0
  386. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/table/MultiResourceTable.test.tsx +297 -0
  387. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/table/MultiResourceTable.tsx +285 -0
  388. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/table/ResourceTable.test.tsx +356 -0
  389. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/table/ResourceTable.tsx +536 -0
  390. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/table/SearchForm.component.test.tsx +321 -0
  391. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/table/SearchForm.test.ts +115 -0
  392. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/table/SearchForm.tsx +376 -0
  393. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/table/buildColumns.test.ts +774 -0
  394. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/table/buildColumns.ts +312 -0
  395. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/table/index.ts +68 -0
  396. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/table/searchFieldUtils.test.ts +377 -0
  397. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/table/searchFieldUtils.ts +139 -0
  398. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/table/searchUtils.test.ts +392 -0
  399. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/table/searchUtils.ts +196 -0
  400. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/table/types.test.ts +63 -0
  401. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/table/types.ts +163 -0
  402. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/table/utils.test.ts +1201 -0
  403. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/components/table/utils.ts +722 -0
  404. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/dependency-check.test.ts +43 -0
  405. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/hooks/index.ts +77 -0
  406. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/hooks/primitives.test.ts +182 -0
  407. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/hooks/primitives.ts +84 -0
  408. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/hooks/queryKeys.test.ts +151 -0
  409. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/hooks/queryKeys.ts +56 -0
  410. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/hooks/test-helpers.ts +69 -0
  411. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/hooks/types.ts +47 -0
  412. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/hooks/useAdvancedSearch.test.ts +638 -0
  413. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/hooks/useAdvancedSearch.ts +423 -0
  414. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/hooks/useBlobUpload.test.ts +682 -0
  415. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/hooks/useBlobUpload.ts +386 -0
  416. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/hooks/useCreateResource.test.ts +249 -0
  417. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/hooks/useCreateResource.ts +89 -0
  418. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/hooks/useDeleteResource.test.ts +216 -0
  419. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/hooks/useDeleteResource.ts +138 -0
  420. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/hooks/useFieldDepth.hook.test.ts +97 -0
  421. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/hooks/useFieldDepth.test.ts +147 -0
  422. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/hooks/useFieldDepth.ts +111 -0
  423. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/hooks/useMultiResourceList.test.ts +327 -0
  424. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/hooks/useMultiResourceList.ts +177 -0
  425. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/hooks/useRerunResource.test.ts +182 -0
  426. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/hooks/useRerunResource.ts +91 -0
  427. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/hooks/useResourceDetail.test.ts +479 -0
  428. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/hooks/useResourceDetail.ts +207 -0
  429. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/hooks/useResourceList.test.ts +239 -0
  430. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/hooks/useResourceList.ts +93 -0
  431. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/hooks/useRestoreResource.test.ts +157 -0
  432. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/hooks/useRestoreResource.ts +83 -0
  433. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/hooks/useSwitchRevision.test.ts +172 -0
  434. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/hooks/useSwitchRevision.ts +89 -0
  435. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/hooks/useUpdateResource.test.ts +177 -0
  436. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/hooks/useUpdateResource.ts +92 -0
  437. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/resourceCustomization.ts +20 -0
  438. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/resources.test.ts +296 -0
  439. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/resources.ts +537 -0
  440. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/types/revision.ts +11 -0
  441. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/utils/componentConfig.test.ts +428 -0
  442. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/utils/customization.test.ts +103 -0
  443. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/utils/customization.ts +55 -0
  444. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/utils/displayHelpers.test.tsx +114 -0
  445. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/utils/displayHelpers.tsx +54 -0
  446. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/utils/errorNotification.test.ts +173 -0
  447. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/utils/errorNotification.ts +103 -0
  448. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/utils/formUtils/converters.test.ts +228 -0
  449. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/utils/formUtils/converters.ts +164 -0
  450. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/utils/formUtils/depthTransition.test.ts +685 -0
  451. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/utils/formUtils/depthTransition.ts +277 -0
  452. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/utils/formUtils/fieldGrouping.test.ts +432 -0
  453. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/utils/formUtils/fieldGrouping.ts +237 -0
  454. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/utils/formUtils/fieldTypeRegistry.test.ts +1470 -0
  455. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/utils/formUtils/fieldTypeRegistry.ts +720 -0
  456. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/utils/formUtils/index.ts +92 -0
  457. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/utils/formUtils/paths.test.ts +93 -0
  458. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/utils/formUtils/paths.ts +47 -0
  459. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/utils/formUtils/transformers.test.ts +2005 -0
  460. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/utils/formUtils/transformers.ts +512 -0
  461. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/utils/formUtils/types.ts +22 -0
  462. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/utils/formUtils/validators.test.ts +564 -0
  463. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/utils/formUtils/validators.ts +265 -0
  464. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/utils/payloadTruncation.test.ts +272 -0
  465. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/utils/payloadTruncation.ts +159 -0
  466. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/utils/resources.test.ts +220 -0
  467. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/utils/revisionList.test.ts +164 -0
  468. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/utils/revisionList.ts +51 -0
  469. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/utils/revisionTree.test.ts +330 -0
  470. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/utils/revisionTree.ts +306 -0
  471. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/utils/virtualization.test.ts +32 -0
  472. specstar-0.10.0/web/generator/templates/base/src/specstar/lib/utils/virtualization.ts +19 -0
  473. specstar-0.10.0/web/generator/templates/base/src/specstar/types/api.ts +111 -0
@@ -0,0 +1,39 @@
1
+ # Python-generated files
2
+ __pycache__/
3
+ *.py[oc]
4
+ build/
5
+ dist/
6
+ wheels/
7
+ *.egg-info
8
+ .coverage
9
+ .coverage.*
10
+ htmlcov/
11
+ coverage.xml
12
+
13
+ # Testing & Quality
14
+ .pytest_cache/
15
+ .mypy_cache/
16
+ .ruff_cache/
17
+ .tox/
18
+ nosetests.xml
19
+
20
+ # Documentation
21
+ site/
22
+
23
+ # Virtual environments
24
+ .venv
25
+ env/
26
+ venv/
27
+ ENV/
28
+
29
+ # Development & IDE
30
+ .vscode/
31
+ .idea/
32
+ *.env
33
+ .DS_Store
34
+
35
+ # Temporary files
36
+ tmp*/
37
+
38
+ # Benchmark results
39
+ benchmark/results/
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 HYChou0515
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,424 @@
1
+ Metadata-Version: 2.4
2
+ Name: specstar
3
+ Version: 0.10.0
4
+ Summary: Model-driven backend platform for FastAPI: REST + GraphQL + search + version history + admin UI from a single msgspec.Struct
5
+ Project-URL: Homepage, https://github.com/HYChou0515/specstar
6
+ Project-URL: Documentation, https://HYChou0515.github.io/specstar/
7
+ Project-URL: Repository, https://github.com/HYChou0515/specstar.git
8
+ Project-URL: Issues, https://github.com/HYChou0515/specstar/issues
9
+ Author-email: HYChou0515 <hychou.svm@example.com>
10
+ License: MIT License
11
+
12
+ Copyright (c) 2025 HYChou0515
13
+
14
+ Permission is hereby granted, free of charge, to any person obtaining a copy
15
+ of this software and associated documentation files (the "Software"), to deal
16
+ in the Software without restriction, including without limitation the rights
17
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
18
+ copies of the Software, and to permit persons to whom the Software is
19
+ furnished to do so, subject to the following conditions:
20
+
21
+ The above copyright notice and this permission notice shall be included in all
22
+ copies or substantial portions of the Software.
23
+
24
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
25
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
26
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
27
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
28
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
29
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
30
+ SOFTWARE.
31
+ License-File: LICENSE
32
+ Keywords: api,automation,crud,fastapi,rest
33
+ Classifier: Development Status :: 4 - Beta
34
+ Classifier: Framework :: FastAPI
35
+ Classifier: Intended Audience :: Developers
36
+ Classifier: License :: OSI Approved :: MIT License
37
+ Classifier: Operating System :: OS Independent
38
+ Classifier: Programming Language :: Python :: 3
39
+ Classifier: Programming Language :: Python :: 3.11
40
+ Classifier: Programming Language :: Python :: 3.12
41
+ Classifier: Programming Language :: Python :: 3.13
42
+ Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
43
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
44
+ Requires-Python: >=3.11
45
+ Requires-Dist: fastapi<1,>=0.115
46
+ Requires-Dist: jsonpatch>=1.33
47
+ Requires-Dist: jsonpointer>=3.0.0
48
+ Requires-Dist: more-itertools>=10.7.0
49
+ Requires-Dist: msgpack>=1.1.1
50
+ Requires-Dist: msgspec>=0.19.0
51
+ Requires-Dist: pydantic<3,>=1.10.26
52
+ Requires-Dist: python-multipart>=0.0.22
53
+ Requires-Dist: qqabc>=0.2.1
54
+ Requires-Dist: ty[dev]>=0.0.33
55
+ Requires-Dist: xxhash>=3.5.0
56
+ Provides-Extra: all
57
+ Requires-Dist: boto3>=1.40.21; extra == 'all'
58
+ Requires-Dist: celery>=5.6.2; extra == 'all'
59
+ Requires-Dist: datamodel-code-generator[http]>=0.35.0; extra == 'all'
60
+ Requires-Dist: httpx>=0.28.1; extra == 'all'
61
+ Requires-Dist: oracledb>=3.4.2; extra == 'all'
62
+ Requires-Dist: pika>=1.3.2; extra == 'all'
63
+ Requires-Dist: psycopg2-binary>=2.9.10; extra == 'all'
64
+ Requires-Dist: pymysql>=1.1.2; extra == 'all'
65
+ Requires-Dist: python-magic>=0.4.27; extra == 'all'
66
+ Requires-Dist: redis>=6.4.0; extra == 'all'
67
+ Requires-Dist: sqlalchemy>=2.0.46; extra == 'all'
68
+ Requires-Dist: strawberry-graphql>=0.288.1; extra == 'all'
69
+ Requires-Dist: tenacity>=9.1.2; extra == 'all'
70
+ Requires-Dist: textual>=6.3.0; extra == 'all'
71
+ Requires-Dist: typer>=0.20.0; extra == 'all'
72
+ Provides-Extra: benchmark
73
+ Requires-Dist: matplotlib>=3.8; extra == 'benchmark'
74
+ Requires-Dist: pyyaml>=6.0; extra == 'benchmark'
75
+ Requires-Dist: rich>=13.0; extra == 'benchmark'
76
+ Provides-Extra: celery
77
+ Requires-Dist: celery>=5.6.2; extra == 'celery'
78
+ Provides-Extra: cli
79
+ Requires-Dist: datamodel-code-generator[http]>=0.35.0; extra == 'cli'
80
+ Requires-Dist: httpx>=0.28.1; extra == 'cli'
81
+ Requires-Dist: tenacity>=9.1.2; extra == 'cli'
82
+ Requires-Dist: textual>=6.3.0; extra == 'cli'
83
+ Requires-Dist: typer>=0.20.0; extra == 'cli'
84
+ Provides-Extra: dev
85
+ Requires-Dist: boto3>=1.40.21; extra == 'dev'
86
+ Requires-Dist: celery>=5.6.2; extra == 'dev'
87
+ Requires-Dist: coverage>=7.9.2; extra == 'dev'
88
+ Requires-Dist: datamodel-code-generator[http]>=0.35.0; extra == 'dev'
89
+ Requires-Dist: httpx>=0.28.1; extra == 'dev'
90
+ Requires-Dist: matplotlib>=3.8; extra == 'dev'
91
+ Requires-Dist: mkdocs-gen-files>=0.5.0; extra == 'dev'
92
+ Requires-Dist: mkdocs-literate-nav>=0.6.0; extra == 'dev'
93
+ Requires-Dist: mkdocs-material-extensions>=1.3.0; extra == 'dev'
94
+ Requires-Dist: mkdocs-material>=9.5.0; extra == 'dev'
95
+ Requires-Dist: mkdocs-section-index>=0.3.0; extra == 'dev'
96
+ Requires-Dist: mkdocs-static-i18n>=1.2.0; extra == 'dev'
97
+ Requires-Dist: mkdocs>=1.6.0; extra == 'dev'
98
+ Requires-Dist: mkdocstrings[python]>=0.26.0; extra == 'dev'
99
+ Requires-Dist: oracledb>=3.4.2; extra == 'dev'
100
+ Requires-Dist: pika>=1.3.2; extra == 'dev'
101
+ Requires-Dist: psycopg2-binary>=2.9.10; extra == 'dev'
102
+ Requires-Dist: pymdown-extensions>=10.0.0; extra == 'dev'
103
+ Requires-Dist: pymysql>=1.1.2; extra == 'dev'
104
+ Requires-Dist: pytest-asyncio>=1.1.0; extra == 'dev'
105
+ Requires-Dist: pytest-markdown-docs>=0.9.1; extra == 'dev'
106
+ Requires-Dist: pytest-rerunfailures>=15.0; extra == 'dev'
107
+ Requires-Dist: pytest>=8.4.1; extra == 'dev'
108
+ Requires-Dist: python-magic>=0.4.27; extra == 'dev'
109
+ Requires-Dist: pyyaml>=6.0; extra == 'dev'
110
+ Requires-Dist: redis>=6.4.0; extra == 'dev'
111
+ Requires-Dist: rich>=13.0; extra == 'dev'
112
+ Requires-Dist: ruff>=0.12.4; extra == 'dev'
113
+ Requires-Dist: sqlalchemy>=2.0.46; extra == 'dev'
114
+ Requires-Dist: strawberry-graphql>=0.288.1; extra == 'dev'
115
+ Requires-Dist: tenacity>=9.1.2; extra == 'dev'
116
+ Requires-Dist: textual>=6.3.0; extra == 'dev'
117
+ Requires-Dist: typer>=0.20.0; extra == 'dev'
118
+ Provides-Extra: docs
119
+ Requires-Dist: boto3>=1.40.21; extra == 'docs'
120
+ Requires-Dist: mkdocs-gen-files>=0.5.0; extra == 'docs'
121
+ Requires-Dist: mkdocs-literate-nav>=0.6.0; extra == 'docs'
122
+ Requires-Dist: mkdocs-material-extensions>=1.3.0; extra == 'docs'
123
+ Requires-Dist: mkdocs-material>=9.5.0; extra == 'docs'
124
+ Requires-Dist: mkdocs-section-index>=0.3.0; extra == 'docs'
125
+ Requires-Dist: mkdocs-static-i18n>=1.2.0; extra == 'docs'
126
+ Requires-Dist: mkdocs>=1.6.0; extra == 'docs'
127
+ Requires-Dist: mkdocstrings[python]>=0.26.0; extra == 'docs'
128
+ Requires-Dist: pymdown-extensions>=10.0.0; extra == 'docs'
129
+ Provides-Extra: graphql
130
+ Requires-Dist: strawberry-graphql>=0.288.1; extra == 'graphql'
131
+ Provides-Extra: magic
132
+ Requires-Dist: python-magic>=0.4.27; extra == 'magic'
133
+ Provides-Extra: mq
134
+ Requires-Dist: pika>=1.3.2; extra == 'mq'
135
+ Provides-Extra: mysql
136
+ Requires-Dist: pymysql>=1.1.2; extra == 'mysql'
137
+ Provides-Extra: oracle
138
+ Requires-Dist: oracledb>=3.4.2; extra == 'oracle'
139
+ Provides-Extra: postgresql
140
+ Requires-Dist: psycopg2-binary>=2.9.10; extra == 'postgresql'
141
+ Provides-Extra: redis
142
+ Requires-Dist: redis>=6.4.0; extra == 'redis'
143
+ Provides-Extra: s3
144
+ Requires-Dist: boto3>=1.40.21; extra == 's3'
145
+ Provides-Extra: sqlalchemy
146
+ Requires-Dist: sqlalchemy>=2.0.46; extra == 'sqlalchemy'
147
+ Description-Content-Type: text/markdown
148
+
149
+ <p align="center">
150
+ <img src="branding/logo-text.svg" alt="SpecStar" height="120">
151
+ </p>
152
+
153
+ <p align="center">
154
+ <strong>Model-driven backend platform for FastAPI</strong><br>
155
+ Generate REST APIs, GraphQL, search, version history, and an admin UI from a single Python model.
156
+ </p>
157
+
158
+ <p align="center">
159
+ <a href="https://pypi.org/project/specstar/"><img alt="PyPI" src="https://img.shields.io/pypi/v/specstar"></a>
160
+ <a href="https://github.com/HYChou0515/specstar/blob/master/LICENSE"><img alt="License" src="https://img.shields.io/pypi/l/specstar"></a>
161
+ <a href="https://hychou0515.github.io/specstar/"><img alt="Docs" src="https://img.shields.io/badge/docs-mkdocs-blue"></a>
162
+ </p>
163
+
164
+ > **Renamed from `autocrud` to `specstar` (v0.10.0).** The old name still installs as a deprecation shim that redirects every `autocrud[.X]` import to `specstar[.X]`. New projects should `pip install specstar`. See the [migration guide](MIGRATION.md).
165
+
166
+ Focus on **business logic**, not infrastructure.
167
+
168
+ ⭐ If you find this project useful, consider giving it a star.
169
+
170
+ ---
171
+
172
+ # Why SpecStar
173
+
174
+ Modern backend development repeatedly rebuilds the same infrastructure:
175
+
176
+ - CRUD APIs
177
+ - validation
178
+ - search and filtering
179
+ - version history
180
+ - permissions
181
+ - background jobs
182
+ - admin tools
183
+
184
+ Most of this code is **not business logic**.
185
+
186
+ SpecStar eliminates this repetition by using a **model-driven architecture**.
187
+
188
+ Define your model once, and the framework generates the rest.
189
+
190
+ ---
191
+
192
+ # Example
193
+
194
+ Define a resource model:
195
+
196
+ ```python
197
+ from msgspec import Struct
198
+
199
+ class User(Struct):
200
+ name: str
201
+ email: str
202
+ ```
203
+
204
+ Register the model:
205
+
206
+ ```python
207
+ from fastapi import FastAPI
208
+ from specstar import spec
209
+
210
+ app = FastAPI()
211
+
212
+ spec.add_model(User)
213
+ spec.apply(app)
214
+ ```
215
+
216
+ Start the server:
217
+
218
+ ```bash
219
+ uvicorn main:app
220
+ ```
221
+
222
+ Optional startup tuning:
223
+
224
+ ```bash
225
+ export SPECSTAR_DEFAULT_QUERY_LIMIT=1000
226
+ ```
227
+
228
+ This controls the default page size for list endpoints. Per-request `limit`
229
+ still overrides it.
230
+
231
+ You now automatically get:
232
+
233
+ ```
234
+ POST /users
235
+ GET /users
236
+ GET /users/{id}
237
+ PUT /users/{id}
238
+ PATCH /users/{id}
239
+ DELETE /users/{id}
240
+ ```
241
+
242
+ OpenAPI documentation is generated automatically.
243
+
244
+ ---
245
+
246
+ # Architecture
247
+
248
+ ```mermaid
249
+ graph TD
250
+
251
+ FastAPI --> SpecStar
252
+ SpecStar --> ResourceManager
253
+ ResourceManager --> Storage
254
+
255
+ Storage --> MetaStore
256
+ Storage --> RevisionStore
257
+ Storage --> BlobStore
258
+
259
+ SpecStar --> REST_API
260
+ SpecStar --> GraphQL_API
261
+ SpecStar --> UI_Generator
262
+ ```
263
+
264
+ ---
265
+
266
+ # Core Features
267
+
268
+ ## Model-driven APIs
269
+
270
+ SpecStar generates APIs directly from Python models.
271
+
272
+ ```
273
+ Model
274
+
275
+ REST API
276
+ GraphQL API
277
+ OpenAPI
278
+ ```
279
+
280
+ ---
281
+
282
+ ## Versioned resources
283
+
284
+ Every resource maintains immutable revision history.
285
+
286
+ ```
287
+ Resource
288
+ ├── r1
289
+ ├── r2
290
+ └── r3
291
+ ```
292
+
293
+ Advantages:
294
+
295
+ * audit history
296
+ * rollback
297
+ * draft workflows
298
+ * debugging
299
+
300
+ ---
301
+
302
+ ## Built-in search
303
+
304
+ Search operates on indexed metadata instead of scanning full resource payloads.
305
+
306
+ ```
307
+ QueryBuilder
308
+
309
+ ResourceManager.search()
310
+
311
+ MetaStore.search()
312
+ ```
313
+
314
+ ---
315
+
316
+ ## Background jobs
317
+
318
+ Jobs are modeled as resources.
319
+
320
+ ```
321
+ create()
322
+
323
+ message_queue.put(resource_id)
324
+ ```
325
+
326
+ Workers process jobs through:
327
+
328
+ ```
329
+ ResourceManager.start_consume()
330
+ ```
331
+
332
+ ---
333
+
334
+ ## Storage abstraction
335
+
336
+ SpecStar supports multiple storage backends.
337
+
338
+ | Backend | Meta | Revision | Blob |
339
+ | -------- | ---------- | -------- | ---------- |
340
+ | Memory | memory | memory | memory |
341
+ | Disk | SQLite | files | filesystem |
342
+ | S3 | SQLite | S3 | S3 |
343
+ | Postgres | PostgreSQL | S3 | S3 |
344
+
345
+ You can also implement custom storage systems.
346
+
347
+ ---
348
+
349
+ ## UI generation
350
+
351
+ SpecStar can generate a web interface directly from the API.
352
+
353
+ ```
354
+ API
355
+
356
+ UI generator
357
+
358
+ admin dashboard
359
+ ```
360
+
361
+ This allows rapid creation of internal tools.
362
+
363
+ ---
364
+
365
+ # Comparison
366
+
367
+ | Feature | SpecStar | Hasura | Django |
368
+ | --------------- | --------- | ---------- | ---------- |
369
+ | REST API | ✅ | ❌ | ✅ |
370
+ | GraphQL | ✅ | ✅ | ⚠️ |
371
+ | Version history | ✅ | ❌ | ❌ |
372
+ | Search engine | ✅ | SQL | ORM |
373
+ | Storage | pluggable | PostgreSQL | relational |
374
+ | Background jobs | built-in | external | external |
375
+ | UI generation | ✅ | console | admin |
376
+
377
+ ---
378
+
379
+ # Quickstart
380
+
381
+ Install:
382
+
383
+ ```bash
384
+ pip install specstar
385
+ ```
386
+
387
+ Run your app:
388
+
389
+ ```bash
390
+ uvicorn main:app
391
+ ```
392
+
393
+ Open:
394
+
395
+ ```
396
+ http://localhost:8000/docs
397
+ ```
398
+
399
+ ---
400
+
401
+ # Documentation
402
+
403
+ Full documentation:
404
+
405
+ [https://hychou0515.github.io/specstar/](https://hychou0515.github.io/specstar/)
406
+
407
+ ---
408
+
409
+ # Example use cases
410
+
411
+ SpecStar works well for:
412
+
413
+ * internal tools
414
+ * content systems
415
+ * configuration management
416
+ * job processing systems
417
+ * administrative APIs
418
+ * workflow management systems
419
+
420
+ ---
421
+
422
+ # License
423
+
424
+ MIT