@greenpandastudios/aug-cli 0.19.0 → 0.21.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 (628) hide show
  1. package/README.md +9 -6
  2. package/THIRD_PARTY_NOTICES.md +4 -0
  3. package/bin/aug.mjs +12 -2
  4. package/docs/about.md +27 -0
  5. package/docs/api/crypto.md +103 -69
  6. package/docs/api/io.md +35 -33
  7. package/docs/api/json.md +3 -3
  8. package/docs/api/memory.md +23 -19
  9. package/docs/api/time.md +10 -9
  10. package/docs/api/web.md +33 -38
  11. package/docs/assets/benchmarks/execution.svg +774 -637
  12. package/docs/assets/benchmarks/http.svg +278 -249
  13. package/docs/assets/benchmarks/improvements.svg +66 -66
  14. package/docs/assets/benchmarks/kernels-mobile.svg +1 -0
  15. package/docs/assets/benchmarks/kernels.svg +1 -0
  16. package/docs/assets/benchmarks/memory.svg +153 -153
  17. package/docs/benchmark-results.json +227089 -90363
  18. package/docs/compatibility.md +8 -8
  19. package/docs/contributing-benchmarks.md +68 -0
  20. package/docs/dev-containers.md +88 -0
  21. package/docs/dgx-consumers.json +122 -0
  22. package/docs/dgx-gyms.json +784 -0
  23. package/docs/dgx-kernels.json +1170 -0
  24. package/docs/dgx-performance.json +227849 -0
  25. package/docs/dgx-spark.md +64 -0
  26. package/docs/diagnostics.md +15 -5
  27. package/docs/docker.md +173 -12
  28. package/docs/editor.md +35 -0
  29. package/docs/example-projects.json +238 -24
  30. package/docs/examples/approved-design/counters.md +34 -126
  31. package/docs/examples/approved-design/dependencies/august/0.21.0/io/contracts.md +178 -0
  32. package/docs/examples/approved-design/domain/app.md +13 -77
  33. package/docs/examples/approved-design/domain/export.md +5 -19
  34. package/docs/examples/approved-design/domain/models.md +4 -23
  35. package/docs/examples/approved-design/domain/numbers.md +24 -114
  36. package/docs/examples/approved-design/index.md +16 -7
  37. package/docs/examples/approved-design/main.md +19 -96
  38. package/docs/examples/benchmark/index.md +6 -5
  39. package/docs/examples/benchmark/main.md +7 -35
  40. package/docs/examples/calls-benchmark/index.md +36 -0
  41. package/docs/examples/calls-benchmark/main.md +78 -0
  42. package/docs/examples/calls-benchmark/operations.md +60 -0
  43. package/docs/examples/cli-args/index.md +6 -5
  44. package/docs/examples/cli-args/main.md +6 -31
  45. package/docs/examples/collections/index.md +6 -5
  46. package/docs/examples/collections/main.md +7 -35
  47. package/docs/examples/collections-benchmark/index.md +6 -5
  48. package/docs/examples/collections-benchmark/main.md +7 -35
  49. package/docs/examples/cpu-benchmark/index.md +6 -5
  50. package/docs/examples/cpu-benchmark/main.md +5 -24
  51. package/docs/examples/developer-workflow/calculator.md +39 -186
  52. package/docs/examples/developer-workflow/dependencies/august/0.21.0/io/contracts.md +178 -0
  53. package/docs/examples/developer-workflow/index.md +16 -7
  54. package/docs/examples/developer-workflow/logging/console.md +10 -56
  55. package/docs/examples/developer-workflow/logging/export.md +4 -14
  56. package/docs/examples/developer-workflow/logging/logger.md +7 -43
  57. package/docs/examples/developer-workflow/main.md +17 -69
  58. package/docs/examples/drop/index.md +6 -5
  59. package/docs/examples/drop/main.md +7 -27
  60. package/docs/examples/drop/resource.md +7 -30
  61. package/docs/examples/errors/errors.md +7 -27
  62. package/docs/examples/errors/index.md +6 -5
  63. package/docs/examples/errors/main.md +7 -28
  64. package/docs/examples/errors-benchmark/index.md +36 -0
  65. package/docs/examples/errors-benchmark/main.md +92 -0
  66. package/docs/examples/errors-benchmark/operations.md +65 -0
  67. package/docs/examples/ffi/index.md +6 -5
  68. package/docs/examples/ffi/main.md +6 -20
  69. package/docs/examples/ffi/native.md +8 -34
  70. package/docs/examples/float-benchmark/index.md +35 -0
  71. package/docs/examples/float-benchmark/main.md +75 -0
  72. package/docs/examples/generic-di/dependencies/august/0.21.0/io/contracts.md +178 -0
  73. package/docs/examples/generic-di/index.md +6 -5
  74. package/docs/examples/generic-di/main.md +9 -39
  75. package/docs/examples/generic-di/types.md +23 -92
  76. package/docs/examples/generics/index.md +6 -5
  77. package/docs/examples/generics/main.md +10 -47
  78. package/docs/examples/generics/types.md +25 -100
  79. package/docs/examples/hello/app/export.md +4 -12
  80. package/docs/examples/hello/app/greeter.md +13 -91
  81. package/docs/examples/hello/dependencies/august/0.21.0/io/contracts.md +178 -0
  82. package/docs/examples/hello/index.md +17 -6
  83. package/docs/examples/hello/logging/console.md +10 -54
  84. package/docs/examples/hello/logging/export.md +4 -14
  85. package/docs/examples/hello/logging/logger.md +7 -45
  86. package/docs/examples/hello/main.md +9 -39
  87. package/docs/examples/http-benchmark/index.md +6 -5
  88. package/docs/examples/http-benchmark/main.md +6 -20
  89. package/docs/examples/http-benchmark/routes.md +9 -31
  90. package/docs/examples/index.md +63 -29
  91. package/docs/examples/interceptors/app.md +20 -139
  92. package/docs/examples/interceptors/dependencies/august/0.21.0/io/contracts.md +178 -0
  93. package/docs/examples/interceptors/index.md +6 -5
  94. package/docs/examples/interceptors/interceptors.md +24 -148
  95. package/docs/examples/interceptors/logging.md +13 -76
  96. package/docs/examples/interceptors/main.md +10 -65
  97. package/docs/examples/json-benchmark/data.md +4 -20
  98. package/docs/examples/json-benchmark/dependencies/packages/@git/url_2d3c37c690c0fa115be1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.md +67 -0
  99. package/docs/examples/json-benchmark/index.md +7 -5
  100. package/docs/examples/json-benchmark/main-yaml.md +20 -0
  101. package/docs/examples/json-benchmark/main.md +10 -49
  102. package/docs/examples/list-benchmark/index.md +35 -0
  103. package/docs/examples/list-benchmark/main.md +78 -0
  104. package/docs/examples/map-churn-benchmark/index.md +35 -0
  105. package/docs/examples/map-churn-benchmark/main.md +106 -0
  106. package/docs/examples/native-blake3/dependencies/packages/@greenpandastudios/aug-blake3/0.1.3/api.md +104 -0
  107. package/docs/examples/native-blake3/dependencies/packages/@greenpandastudios/aug-blake3/0.1.3/contracts.md +54 -0
  108. package/docs/examples/native-blake3/dependencies/packages/@greenpandastudios/aug-blake3/0.1.3/native.abi-json.md +48 -0
  109. package/docs/examples/native-blake3/hashing.md +93 -0
  110. package/docs/examples/native-blake3/index.md +38 -0
  111. package/docs/examples/native-blake3/main.md +73 -0
  112. package/docs/examples/native-pytorch/dependencies/packages/@greenpandastudios/aug-pytorch/0.1.4/api.md +406 -0
  113. package/docs/examples/native-pytorch/dependencies/packages/@greenpandastudios/aug-pytorch/0.1.4/bindings.md +51 -0
  114. package/docs/examples/native-pytorch/dependencies/packages/@greenpandastudios/aug-pytorch/0.1.4/contracts.md +63 -0
  115. package/docs/examples/native-pytorch/dependencies/packages/@greenpandastudios/aug-pytorch/0.1.4/native.abi-json.md +161 -0
  116. package/docs/examples/native-pytorch/index.md +38 -0
  117. package/docs/examples/native-pytorch/main.md +73 -0
  118. package/docs/examples/native-pytorch/tensors.md +123 -0
  119. package/docs/examples/native-sqlite/database.md +116 -0
  120. package/docs/examples/native-sqlite/dependencies/packages/@greenpandastudios/aug-sqlite/0.1.3/api.md +284 -0
  121. package/docs/examples/native-sqlite/dependencies/packages/@greenpandastudios/aug-sqlite/0.1.3/bindings.md +51 -0
  122. package/docs/examples/native-sqlite/dependencies/packages/@greenpandastudios/aug-sqlite/0.1.3/contracts.md +75 -0
  123. package/docs/examples/native-sqlite/dependencies/packages/@greenpandastudios/aug-sqlite/0.1.3/native.abi-json.md +119 -0
  124. package/docs/examples/native-sqlite/index.md +38 -0
  125. package/docs/examples/native-sqlite/main.md +73 -0
  126. package/docs/examples/native-zlib/compression.md +99 -0
  127. package/docs/examples/native-zlib/dependencies/packages/@greenpandastudios/aug-zlib/0.1.3/api.md +153 -0
  128. package/docs/examples/native-zlib/dependencies/packages/@greenpandastudios/aug-zlib/0.1.3/contracts.md +54 -0
  129. package/docs/examples/native-zlib/dependencies/packages/@greenpandastudios/aug-zlib/0.1.3/native.abi-json.md +76 -0
  130. package/docs/examples/native-zlib/index.md +38 -0
  131. package/docs/examples/native-zlib/main.md +78 -0
  132. package/docs/examples/new-syntax/console.md +10 -52
  133. package/docs/examples/new-syntax/dependencies/august/0.21.0/io/contracts.md +178 -0
  134. package/docs/examples/new-syntax/greeter.md +13 -71
  135. package/docs/examples/new-syntax/index.md +6 -5
  136. package/docs/examples/new-syntax/logger.md +7 -43
  137. package/docs/examples/new-syntax/main.md +10 -53
  138. package/docs/examples/new-syntax/math.md +6 -24
  139. package/docs/examples/oidc-login/client/contracts.md +10 -61
  140. package/docs/examples/oidc-login/client/endpoints.md +32 -154
  141. package/docs/examples/oidc-login/client/export.md +5 -23
  142. package/docs/examples/oidc-login/client/login.md +234 -344
  143. package/docs/examples/oidc-login/client/logout.md +38 -143
  144. package/docs/examples/oidc-login/client/protocol.md +183 -304
  145. package/docs/examples/oidc-login/client/session.md +41 -149
  146. package/docs/examples/oidc-login/client/views.md +13 -58
  147. package/docs/examples/oidc-login/common/export.md +6 -26
  148. package/docs/examples/oidc-login/common/headers.md +42 -72
  149. package/docs/examples/oidc-login/common/keys.md +40 -164
  150. package/docs/examples/oidc-login/common/settings.md +24 -40
  151. package/docs/examples/oidc-login/common/views.md +7 -28
  152. package/docs/examples/oidc-login/dependencies/packages/@git/url_0eb7c89453c87681ed15/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/store.md +205 -0
  153. package/docs/examples/oidc-login/dependencies/packages/@git/url_2d3c37c690c0fa115be1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.md +67 -0
  154. package/docs/examples/oidc-login/dependencies/packages/@git/url_897efafd565158fc4908/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.md +267 -0
  155. package/docs/examples/oidc-login/dependencies/packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/contracts.md +415 -0
  156. package/docs/examples/oidc-login/dependencies/packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/jose.md +271 -0
  157. package/docs/examples/oidc-login/dependencies/packages/@git/url_c092cd151499c4e1d8a1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.md +89 -0
  158. package/docs/examples/oidc-login/index.md +8 -7
  159. package/docs/examples/oidc-login/main-yaml.md +7 -0
  160. package/docs/examples/oidc-login/main.md +26 -153
  161. package/docs/examples/oidc-login/provider/authorization.md +232 -275
  162. package/docs/examples/oidc-login/provider/contracts.md +24 -146
  163. package/docs/examples/oidc-login/provider/credentials.md +24 -57
  164. package/docs/examples/oidc-login/provider/discovery.md +48 -122
  165. package/docs/examples/oidc-login/provider/export.md +11 -37
  166. package/docs/examples/oidc-login/provider/token.md +159 -237
  167. package/docs/examples/oidc-login/provider/userinfo.md +47 -102
  168. package/docs/examples/oidc-login/provider/views.md +13 -53
  169. package/docs/examples/ownership/counter.md +17 -63
  170. package/docs/examples/ownership/index.md +6 -5
  171. package/docs/examples/ownership/main.md +7 -30
  172. package/docs/examples/ownership-transfer/dependencies/august/0.21.0/io/contracts.md +178 -0
  173. package/docs/examples/ownership-transfer/index.md +6 -5
  174. package/docs/examples/ownership-transfer/main.md +10 -52
  175. package/docs/examples/ownership-transfer/resource.md +15 -67
  176. package/docs/examples/packages-app/dependencies/packages/@example/aug-math/0.1.0/arithmetic.md +12 -50
  177. package/docs/examples/packages-app/index.md +7 -6
  178. package/docs/examples/packages-app/main.md +7 -25
  179. package/docs/examples/packages-math/aug-package-json.md +1 -1
  180. package/docs/examples/packages-math/index.md +7 -6
  181. package/docs/examples/packages-math/src/arithmetic.md +12 -50
  182. package/docs/examples/packages-math/src/export.md +4 -12
  183. package/docs/examples/records-benchmark/data.md +55 -0
  184. package/docs/examples/records-benchmark/index.md +36 -0
  185. package/docs/examples/records-benchmark/main.md +85 -0
  186. package/docs/examples/startup-benchmark/index.md +6 -5
  187. package/docs/examples/startup-benchmark/main.md +5 -17
  188. package/docs/examples/strings-benchmark/index.md +35 -0
  189. package/docs/examples/strings-benchmark/main.md +76 -0
  190. package/docs/examples/tasks-benchmark/index.md +36 -0
  191. package/docs/examples/tasks-benchmark/main.md +89 -0
  192. package/docs/examples/tasks-benchmark/operations.md +58 -0
  193. package/docs/examples/visibility/counter.md +19 -67
  194. package/docs/examples/visibility/index.md +6 -5
  195. package/docs/examples/visibility/main.md +7 -31
  196. package/docs/examples/weather-api/forecasts.md +168 -0
  197. package/docs/examples/weather-api/index.md +42 -0
  198. package/docs/examples/weather-api/main-yaml.md +21 -0
  199. package/docs/examples/weather-api/main.md +65 -0
  200. package/docs/examples.json +10 -0
  201. package/docs/getting-started.md +105 -2
  202. package/docs/grammar.md +7 -5
  203. package/docs/guides/change-a-module.md +64 -0
  204. package/docs/guides/index.md +27 -0
  205. package/docs/gym-results.json +784 -0
  206. package/docs/implementation-map.md +6 -0
  207. package/docs/index.md +51 -29
  208. package/docs/kernel-results.json +1170 -0
  209. package/docs/language-conformance.md +7 -1
  210. package/docs/language-constructs.md +30 -22
  211. package/docs/language-design-audit.md +1 -1
  212. package/docs/learn/data-and-errors.md +77 -0
  213. package/docs/learn/index.md +30 -0
  214. package/docs/learn/modules-and-dependencies.md +73 -0
  215. package/docs/learn/state-and-tests.md +71 -0
  216. package/docs/learn/values-and-functions.md +62 -0
  217. package/docs/lesson-failures.json +8 -0
  218. package/docs/maintaining-docs.md +16 -4
  219. package/docs/native-implementation.md +276 -0
  220. package/docs/native-interop-llvm-plan.md +342 -0
  221. package/docs/native-package-examples.md +684 -0
  222. package/docs/native-packages.md +179 -0
  223. package/docs/packages.md +72 -126
  224. package/docs/performance.md +61 -68
  225. package/docs/production-readiness.md +16 -5
  226. package/docs/public/downloads/approved-design.zip +0 -0
  227. package/docs/public/downloads/benchmark.zip +0 -0
  228. package/docs/public/downloads/calls-benchmark.zip +0 -0
  229. package/docs/public/downloads/cli-args.zip +0 -0
  230. package/docs/public/downloads/collections-benchmark.zip +0 -0
  231. package/docs/public/downloads/collections.zip +0 -0
  232. package/docs/public/downloads/cpu-benchmark.zip +0 -0
  233. package/docs/public/downloads/developer-workflow.zip +0 -0
  234. package/docs/public/downloads/drop.zip +0 -0
  235. package/docs/public/downloads/errors-benchmark.zip +0 -0
  236. package/docs/public/downloads/errors.zip +0 -0
  237. package/docs/public/downloads/ffi.zip +0 -0
  238. package/docs/public/downloads/float-benchmark.zip +0 -0
  239. package/docs/public/downloads/generic-di.zip +0 -0
  240. package/docs/public/downloads/generics.zip +0 -0
  241. package/docs/public/downloads/hello.zip +0 -0
  242. package/docs/public/downloads/http-benchmark.zip +0 -0
  243. package/docs/public/downloads/interceptors.zip +0 -0
  244. package/docs/public/downloads/json-benchmark.zip +0 -0
  245. package/docs/public/downloads/list-benchmark.zip +0 -0
  246. package/docs/public/downloads/map-churn-benchmark.zip +0 -0
  247. package/docs/public/downloads/native-blake3.zip +0 -0
  248. package/docs/public/downloads/native-pytorch.zip +0 -0
  249. package/docs/public/downloads/native-sqlite.zip +0 -0
  250. package/docs/public/downloads/native-zlib.zip +0 -0
  251. package/docs/public/downloads/new-syntax.zip +0 -0
  252. package/docs/public/downloads/oidc-login.zip +0 -0
  253. package/docs/public/downloads/ownership-transfer.zip +0 -0
  254. package/docs/public/downloads/ownership.zip +0 -0
  255. package/docs/public/downloads/packages-app.zip +0 -0
  256. package/docs/public/downloads/packages-math.zip +0 -0
  257. package/docs/public/downloads/records-benchmark.zip +0 -0
  258. package/docs/public/downloads/startup-benchmark.zip +0 -0
  259. package/docs/public/downloads/strings-benchmark.zip +0 -0
  260. package/docs/public/downloads/tasks-benchmark.zip +0 -0
  261. package/docs/public/downloads/visibility.zip +0 -0
  262. package/docs/public/downloads/weather-api.zip +0 -0
  263. package/docs/qualification-results.md +66 -0
  264. package/docs/reference.md +47 -17
  265. package/docs/releasing.md +105 -16
  266. package/docs/research/code-to-natural-language.md +108 -0
  267. package/docs/research/ecosystem-workflow.md +41 -0
  268. package/docs/research/libtorch-native-qualification.md +115 -0
  269. package/docs/research/native-interop-llvm.md +197 -0
  270. package/docs/research/qualification-methods.md +15 -0
  271. package/docs/research/wiki-editorial-design.md +71 -0
  272. package/docs/roadmap.md +2 -1
  273. package/docs/safety-gyms.md +41 -0
  274. package/docs/specifications.md +27 -11
  275. package/docs/testing.md +19 -5
  276. package/docs/tooling.md +36 -22
  277. package/docs/weather-api.md +65 -0
  278. package/docs/web-library-gaps.md +1 -1
  279. package/docs/web.md +54 -18
  280. package/docs/writing-docs.md +49 -0
  281. package/examples/{hello/.aug-spec/august/0.19.0 → approved-design/.aug-spec/august/0.21.0}/io/contracts.aug +4 -3
  282. package/examples/approved-design/.aug-spec/august/0.21.0/io/contracts.aug.md +82 -0
  283. package/examples/approved-design/.aug-spec/manifest.json +3 -3
  284. package/examples/approved-design/counters.aug +5 -4
  285. package/examples/approved-design/counters.aug.md +25 -132
  286. package/examples/approved-design/domain/app.aug +2 -1
  287. package/examples/approved-design/domain/app.aug.md +10 -80
  288. package/examples/approved-design/domain/export.aug +1 -0
  289. package/examples/approved-design/domain/export.aug.md +4 -20
  290. package/examples/approved-design/domain/models.aug +1 -0
  291. package/examples/approved-design/domain/models.aug.md +3 -25
  292. package/examples/approved-design/domain/numbers.aug +3 -2
  293. package/examples/approved-design/domain/numbers.aug.md +19 -116
  294. package/examples/approved-design/main.aug +1 -0
  295. package/examples/approved-design/main.aug.md +12 -95
  296. package/examples/benchmark/.aug-spec/manifest.json +1 -1
  297. package/examples/benchmark/main.aug +1 -0
  298. package/examples/benchmark/main.aug.md +6 -36
  299. package/examples/cli-args/.aug-spec/manifest.json +1 -1
  300. package/examples/cli-args/main.aug +1 -0
  301. package/examples/cli-args/main.aug.md +5 -32
  302. package/examples/collections/.aug-spec/manifest.json +1 -1
  303. package/examples/collections/main.aug +1 -0
  304. package/examples/collections/main.aug.md +6 -36
  305. package/examples/{generic-di/.aug-spec/august/0.19.0 → developer-workflow/.aug-spec/august/0.21.0}/io/contracts.aug +4 -3
  306. package/examples/developer-workflow/.aug-spec/august/0.21.0/io/contracts.aug.md +82 -0
  307. package/examples/developer-workflow/.aug-spec/manifest.json +3 -3
  308. package/examples/developer-workflow/calculator.aug +3 -2
  309. package/examples/developer-workflow/calculator.aug.md +28 -189
  310. package/examples/developer-workflow/logging/console.aug +2 -1
  311. package/examples/developer-workflow/logging/console.aug.md +7 -57
  312. package/examples/developer-workflow/logging/export.aug +1 -0
  313. package/examples/developer-workflow/logging/export.aug.md +3 -15
  314. package/examples/developer-workflow/logging/logger.aug +1 -0
  315. package/examples/developer-workflow/logging/logger.aug.md +6 -46
  316. package/examples/developer-workflow/main.aug +1 -0
  317. package/examples/developer-workflow/main.aug.md +10 -68
  318. package/examples/drop/.aug-spec/manifest.json +1 -1
  319. package/examples/drop/main.aug +1 -0
  320. package/examples/drop/main.aug.md +6 -28
  321. package/examples/drop/resource.aug +1 -0
  322. package/examples/drop/resource.aug.md +6 -34
  323. package/examples/errors/.aug-spec/manifest.json +1 -1
  324. package/examples/errors/errors.aug +2 -1
  325. package/examples/errors/errors.aug.md +4 -27
  326. package/examples/errors/main.aug +1 -0
  327. package/examples/errors/main.aug.md +6 -29
  328. package/examples/ffi/.aug-spec/manifest.json +1 -1
  329. package/examples/ffi/main.aug +1 -0
  330. package/examples/ffi/main.aug.md +5 -21
  331. package/examples/ffi/native.aug +2 -1
  332. package/examples/ffi/native.aug.md +5 -35
  333. package/examples/{approved-design/.aug-spec/august/0.19.0 → generic-di/.aug-spec/august/0.21.0}/io/contracts.aug +4 -3
  334. package/examples/generic-di/.aug-spec/august/0.21.0/io/contracts.aug.md +82 -0
  335. package/examples/generic-di/.aug-spec/manifest.json +3 -3
  336. package/examples/generic-di/main.aug +1 -0
  337. package/examples/generic-di/main.aug.md +8 -40
  338. package/examples/generic-di/types.aug +3 -2
  339. package/examples/generic-di/types.aug.md +18 -97
  340. package/examples/generics/.aug-spec/manifest.json +1 -1
  341. package/examples/generics/main.aug +1 -0
  342. package/examples/generics/main.aug.md +9 -48
  343. package/examples/generics/types.aug +4 -3
  344. package/examples/generics/types.aug.md +18 -104
  345. package/examples/{developer-workflow/.aug-spec/august/0.19.0 → hello/.aug-spec/august/0.21.0}/io/contracts.aug +4 -3
  346. package/examples/hello/.aug-spec/august/0.21.0/io/contracts.aug.md +82 -0
  347. package/examples/hello/.aug-spec/manifest.json +3 -3
  348. package/examples/hello/app/export.aug +1 -0
  349. package/examples/hello/app/export.aug.md +3 -13
  350. package/examples/hello/app/greeter.aug +2 -1
  351. package/examples/hello/app/greeter.aug.md +10 -94
  352. package/examples/hello/logging/console.aug +2 -1
  353. package/examples/hello/logging/console.aug.md +7 -55
  354. package/examples/hello/logging/export.aug +1 -0
  355. package/examples/hello/logging/export.aug.md +3 -15
  356. package/examples/hello/logging/logger.aug +1 -0
  357. package/examples/hello/logging/logger.aug.md +6 -48
  358. package/examples/hello/main.aug +1 -0
  359. package/examples/hello/main.aug.md +8 -40
  360. package/examples/interceptors/.aug-spec/august/0.21.0/io/contracts.aug +37 -0
  361. package/examples/interceptors/.aug-spec/august/0.21.0/io/contracts.aug.md +82 -0
  362. package/examples/interceptors/.aug-spec/manifest.json +3 -3
  363. package/examples/interceptors/app.aug +3 -2
  364. package/examples/interceptors/app.aug.md +15 -141
  365. package/examples/interceptors/interceptors.aug +3 -2
  366. package/examples/interceptors/interceptors.aug.md +19 -152
  367. package/examples/interceptors/logging.aug +2 -1
  368. package/examples/interceptors/logging.aug.md +10 -79
  369. package/examples/interceptors/main.aug +1 -0
  370. package/examples/interceptors/main.aug.md +9 -66
  371. package/examples/native-blake3/.aug-spec/manifest.json +16 -0
  372. package/examples/native-blake3/.aug-spec/packages/@greenpandastudios/aug-blake3/0.1.1/native.abi.json +29 -0
  373. package/examples/native-blake3/.aug-spec/packages/@greenpandastudios/aug-blake3/0.1.3/api.aug +14 -0
  374. package/examples/native-blake3/.aug-spec/packages/@greenpandastudios/aug-blake3/0.1.3/api.aug.md +34 -0
  375. package/examples/native-blake3/.aug-spec/packages/@greenpandastudios/aug-blake3/0.1.3/contracts.aug +4 -0
  376. package/examples/native-blake3/.aug-spec/packages/@greenpandastudios/aug-blake3/0.1.3/contracts.aug.md +8 -0
  377. package/examples/native-blake3/.aug-spec/packages/@greenpandastudios/aug-blake3/0.1.3/native.abi.json +29 -0
  378. package/examples/native-blake3/AGENTS.md +5 -0
  379. package/examples/native-blake3/aug.lock.json +253 -0
  380. package/examples/native-blake3/hashing.aug +11 -0
  381. package/examples/native-blake3/hashing.aug.md +25 -0
  382. package/examples/native-blake3/main.aug +8 -0
  383. package/examples/native-blake3/main.aug.md +13 -0
  384. package/examples/native-pytorch/.aug-spec/manifest.json +18 -0
  385. package/examples/native-pytorch/.aug-spec/packages/@greenpandastudios/aug-pytorch/0.1.1/native.abi.json +142 -0
  386. package/examples/native-pytorch/.aug-spec/packages/@greenpandastudios/aug-pytorch/0.1.3/native.abi.json +142 -0
  387. package/examples/native-pytorch/.aug-spec/packages/@greenpandastudios/aug-pytorch/0.1.4/api.aug +101 -0
  388. package/examples/native-pytorch/.aug-spec/packages/@greenpandastudios/aug-pytorch/0.1.4/api.aug.md +160 -0
  389. package/examples/native-pytorch/.aug-spec/packages/@greenpandastudios/aug-pytorch/0.1.4/bindings.aug +3 -0
  390. package/examples/native-pytorch/.aug-spec/packages/@greenpandastudios/aug-pytorch/0.1.4/bindings.aug.md +8 -0
  391. package/examples/native-pytorch/.aug-spec/packages/@greenpandastudios/aug-pytorch/0.1.4/contracts.aug +6 -0
  392. package/examples/native-pytorch/.aug-spec/packages/@greenpandastudios/aug-pytorch/0.1.4/contracts.aug.md +13 -0
  393. package/examples/native-pytorch/.aug-spec/packages/@greenpandastudios/aug-pytorch/0.1.4/native.abi.json +142 -0
  394. package/examples/native-pytorch/AGENTS.md +5 -0
  395. package/examples/native-pytorch/aug.lock.json +309 -0
  396. package/examples/native-pytorch/main.aug +8 -0
  397. package/examples/native-pytorch/main.aug.md +13 -0
  398. package/examples/native-pytorch/tensors.aug +23 -0
  399. package/examples/native-pytorch/tensors.aug.md +35 -0
  400. package/examples/native-sqlite/.aug-spec/manifest.json +18 -0
  401. package/examples/native-sqlite/.aug-spec/packages/@greenpandastudios/aug-sqlite/0.1.2/native.abi.json +100 -0
  402. package/examples/native-sqlite/.aug-spec/packages/@greenpandastudios/aug-sqlite/0.1.3/api.aug +48 -0
  403. package/examples/native-sqlite/.aug-spec/packages/@greenpandastudios/aug-sqlite/0.1.3/api.aug.md +91 -0
  404. package/examples/native-sqlite/.aug-spec/packages/@greenpandastudios/aug-sqlite/0.1.3/bindings.aug +3 -0
  405. package/examples/native-sqlite/.aug-spec/packages/@greenpandastudios/aug-sqlite/0.1.3/bindings.aug.md +8 -0
  406. package/examples/native-sqlite/.aug-spec/packages/@greenpandastudios/aug-sqlite/0.1.3/contracts.aug +8 -0
  407. package/examples/native-sqlite/.aug-spec/packages/@greenpandastudios/aug-sqlite/0.1.3/contracts.aug.md +22 -0
  408. package/examples/native-sqlite/.aug-spec/packages/@greenpandastudios/aug-sqlite/0.1.3/native.abi.json +100 -0
  409. package/examples/native-sqlite/AGENTS.md +5 -0
  410. package/examples/native-sqlite/aug.lock.json +236 -0
  411. package/examples/native-sqlite/database.aug +15 -0
  412. package/examples/native-sqlite/database.aug.md +27 -0
  413. package/examples/native-sqlite/main.aug +8 -0
  414. package/examples/native-sqlite/main.aug.md +13 -0
  415. package/examples/native-zlib/.aug-spec/manifest.json +16 -0
  416. package/examples/native-zlib/.aug-spec/packages/@greenpandastudios/aug-zlib/0.1.1/native.abi.json +57 -0
  417. package/examples/native-zlib/.aug-spec/packages/@greenpandastudios/aug-zlib/0.1.3/api.aug +29 -0
  418. package/examples/native-zlib/.aug-spec/packages/@greenpandastudios/aug-zlib/0.1.3/api.aug.md +54 -0
  419. package/examples/native-zlib/.aug-spec/packages/@greenpandastudios/aug-zlib/0.1.3/contracts.aug +4 -0
  420. package/examples/native-zlib/.aug-spec/packages/@greenpandastudios/aug-zlib/0.1.3/contracts.aug.md +8 -0
  421. package/examples/native-zlib/.aug-spec/packages/@greenpandastudios/aug-zlib/0.1.3/native.abi.json +57 -0
  422. package/examples/native-zlib/AGENTS.md +5 -0
  423. package/examples/native-zlib/aug.lock.json +236 -0
  424. package/examples/native-zlib/compression.aug +15 -0
  425. package/examples/native-zlib/compression.aug.md +27 -0
  426. package/examples/native-zlib/main.aug +10 -0
  427. package/examples/native-zlib/main.aug.md +13 -0
  428. package/examples/new-syntax/.aug-spec/august/0.21.0/io/contracts.aug +37 -0
  429. package/examples/new-syntax/.aug-spec/august/0.21.0/io/contracts.aug.md +82 -0
  430. package/examples/new-syntax/.aug-spec/manifest.json +3 -3
  431. package/examples/new-syntax/console.aug +2 -1
  432. package/examples/new-syntax/console.aug.md +7 -53
  433. package/examples/new-syntax/greeter.aug +2 -1
  434. package/examples/new-syntax/greeter.aug.md +10 -74
  435. package/examples/new-syntax/logger.aug +1 -0
  436. package/examples/new-syntax/logger.aug.md +6 -46
  437. package/examples/new-syntax/main.aug +1 -0
  438. package/examples/new-syntax/main.aug.md +9 -54
  439. package/examples/new-syntax/math.aug +2 -1
  440. package/examples/new-syntax/math.aug.md +3 -24
  441. package/examples/oidc-login/.aug-spec/manifest.json +13 -13
  442. package/examples/oidc-login/.aug-spec/packages/@git/url_0eb7c89453c87681ed15/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/store.aug.md +71 -0
  443. package/examples/oidc-login/.aug-spec/packages/@git/url_2d3c37c690c0fa115be1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.aug.md +17 -0
  444. package/examples/oidc-login/.aug-spec/packages/@git/url_897efafd565158fc4908/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.aug.md +125 -0
  445. package/examples/oidc-login/.aug-spec/{august/0.19.0/crypto → packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40}/contracts.aug +12 -11
  446. package/examples/oidc-login/.aug-spec/packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/contracts.aug.md +244 -0
  447. package/examples/oidc-login/.aug-spec/{august/0.19.0/crypto → packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40}/jose.aug +6 -5
  448. package/examples/oidc-login/.aug-spec/packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/jose.aug.md +71 -0
  449. package/examples/oidc-login/.aug-spec/packages/@git/url_c092cd151499c4e1d8a1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.aug.md +30 -0
  450. package/examples/oidc-login/aug.lock.json +100 -0
  451. package/examples/oidc-login/client/contracts.aug +1 -0
  452. package/examples/oidc-login/client/contracts.aug.md +9 -66
  453. package/examples/oidc-login/client/endpoints.aug +6 -5
  454. package/examples/oidc-login/client/endpoints.aug.md +13 -145
  455. package/examples/oidc-login/client/export.aug +1 -0
  456. package/examples/oidc-login/client/export.aug.md +4 -24
  457. package/examples/oidc-login/client/login.aug +7 -6
  458. package/examples/oidc-login/client/login.aug.md +25 -303
  459. package/examples/oidc-login/client/logout.aug +5 -4
  460. package/examples/oidc-login/client/logout.aug.md +13 -135
  461. package/examples/oidc-login/client/protocol.aug +7 -6
  462. package/examples/oidc-login/client/protocol.aug.md +36 -283
  463. package/examples/oidc-login/client/session.aug +5 -4
  464. package/examples/oidc-login/client/session.aug.md +12 -139
  465. package/examples/oidc-login/client/views.aug +3 -2
  466. package/examples/oidc-login/client/views.aug.md +8 -57
  467. package/examples/oidc-login/common/export.aug +1 -0
  468. package/examples/oidc-login/common/export.aug.md +5 -27
  469. package/examples/oidc-login/common/headers.aug +4 -3
  470. package/examples/oidc-login/common/headers.aug.md +9 -67
  471. package/examples/oidc-login/common/keys.aug +6 -5
  472. package/examples/oidc-login/common/keys.aug.md +29 -165
  473. package/examples/oidc-login/common/settings.aug +2 -1
  474. package/examples/oidc-login/common/settings.aug.md +5 -39
  475. package/examples/oidc-login/common/views.aug +2 -1
  476. package/examples/oidc-login/common/views.aug.md +4 -28
  477. package/examples/oidc-login/main.aug +6 -16
  478. package/examples/oidc-login/main.aug.md +17 -146
  479. package/examples/oidc-login/main.yaml +7 -0
  480. package/examples/oidc-login/provider/authorization.aug +7 -6
  481. package/examples/oidc-login/provider/authorization.aug.md +23 -238
  482. package/examples/oidc-login/provider/contracts.aug +1 -0
  483. package/examples/oidc-login/provider/contracts.aug.md +23 -158
  484. package/examples/oidc-login/provider/credentials.aug +3 -2
  485. package/examples/oidc-login/provider/credentials.aug.md +9 -53
  486. package/examples/oidc-login/provider/discovery.aug +4 -3
  487. package/examples/oidc-login/provider/discovery.aug.md +11 -118
  488. package/examples/oidc-login/provider/export.aug +1 -0
  489. package/examples/oidc-login/provider/export.aug.md +6 -34
  490. package/examples/oidc-login/provider/token.aug +6 -5
  491. package/examples/oidc-login/provider/token.aug.md +16 -204
  492. package/examples/oidc-login/provider/userinfo.aug +4 -3
  493. package/examples/oidc-login/provider/userinfo.aug.md +10 -92
  494. package/examples/oidc-login/provider/views.aug +3 -2
  495. package/examples/oidc-login/provider/views.aug.md +8 -52
  496. package/examples/ownership/.aug-spec/manifest.json +1 -1
  497. package/examples/ownership/counter.aug +3 -2
  498. package/examples/ownership/counter.aug.md +12 -66
  499. package/examples/ownership/main.aug +1 -0
  500. package/examples/ownership/main.aug.md +6 -31
  501. package/examples/ownership-transfer/.aug-spec/august/0.21.0/io/contracts.aug +37 -0
  502. package/examples/ownership-transfer/.aug-spec/august/0.21.0/io/contracts.aug.md +82 -0
  503. package/examples/ownership-transfer/.aug-spec/manifest.json +3 -3
  504. package/examples/ownership-transfer/main.aug +1 -0
  505. package/examples/ownership-transfer/main.aug.md +9 -53
  506. package/examples/ownership-transfer/resource.aug +2 -1
  507. package/examples/ownership-transfer/resource.aug.md +12 -71
  508. package/examples/packages/app/.aug-spec/manifest.json +1 -1
  509. package/examples/packages/app/.aug-spec/packages/@example/aug-math/0.1.0/arithmetic.aug +2 -1
  510. package/examples/packages/app/.aug-spec/packages/@example/aug-math/0.1.0/arithmetic.aug.md +9 -51
  511. package/examples/packages/app/main.aug +1 -0
  512. package/examples/packages/app/main.aug.md +6 -26
  513. package/examples/packages/math/.aug-spec/manifest.json +1 -1
  514. package/examples/packages/math/aug-package.json +1 -1
  515. package/examples/packages/math/src/arithmetic.aug +2 -1
  516. package/examples/packages/math/src/arithmetic.aug.md +9 -51
  517. package/examples/packages/math/src/export.aug +1 -0
  518. package/examples/packages/math/src/export.aug.md +3 -13
  519. package/examples/visibility/.aug-spec/manifest.json +1 -1
  520. package/examples/visibility/counter.aug +4 -3
  521. package/examples/visibility/counter.aug.md +12 -68
  522. package/examples/visibility/main.aug +1 -0
  523. package/examples/visibility/main.aug.md +6 -32
  524. package/examples/weather-api/.aug-spec/manifest.json +8 -0
  525. package/examples/weather-api/AGENTS.md +17 -0
  526. package/examples/weather-api/README.md +19 -0
  527. package/examples/weather-api/forecasts.aug +47 -0
  528. package/examples/weather-api/forecasts.aug.md +32 -0
  529. package/examples/weather-api/main.aug +4 -0
  530. package/examples/weather-api/main.aug.md +15 -0
  531. package/examples/weather-api/main.yaml +5 -0
  532. package/examples/weather-api/weather.http +5 -0
  533. package/native/compiler-packs.json +43 -0
  534. package/package.json +4 -4
  535. package/runtime/aug_http.c +48 -21
  536. package/runtime/aug_http_ir.c +30 -0
  537. package/runtime/aug_http_ir.h +18 -0
  538. package/runtime/aug_ir.c +209 -0
  539. package/runtime/aug_ir.h +89 -0
  540. package/runtime/aug_json.c +6 -1
  541. package/runtime/aug_runtime.c +82 -16
  542. package/runtime/aug_runtime.h +16 -2
  543. package/runtime/aug_tasks.c +38 -7
  544. package/runtime/aug_values.c +12 -6
  545. package/scripts/bootstrap-native.mjs +184 -106
  546. package/scripts/native-setup.mjs +98 -0
  547. package/scripts/native-toolchain.mjs +28 -0
  548. package/src/ast.js +1 -1
  549. package/src/builtins.js +1 -1
  550. package/src/checker.js +369 -100
  551. package/src/cli.js +198 -26
  552. package/src/codegen.js +32 -7
  553. package/src/compiler-packs.js +66 -0
  554. package/src/config.js +3 -3
  555. package/src/contracts.js +10 -0
  556. package/src/editor.js +86 -22
  557. package/src/fixes.js +90 -2
  558. package/src/formatter.js +23 -10
  559. package/src/git-http.js +137 -0
  560. package/src/git-packages.js +118 -0
  561. package/src/help.js +33 -24
  562. package/src/http-contracts.js +14 -0
  563. package/src/http-policies.js +5 -5
  564. package/src/ir-types.js +5 -0
  565. package/src/ir-verify.js +277 -0
  566. package/src/ir.js +962 -0
  567. package/src/libraries.js +1 -1
  568. package/src/llvm-debug.js +101 -0
  569. package/src/llvm-native.js +152 -0
  570. package/src/llvm-platform.js +20 -0
  571. package/src/llvm.js +781 -0
  572. package/src/lsp.js +14 -5
  573. package/src/native-artifacts.js +207 -0
  574. package/src/native-bindings.js +189 -0
  575. package/src/native-contracts.js +295 -0
  576. package/src/native-declarations.js +68 -0
  577. package/src/native-facts.js +63 -0
  578. package/src/native.js +19 -13
  579. package/src/navigation.js +4 -2
  580. package/src/openapi.js +5 -4
  581. package/src/package-locking.js +88 -0
  582. package/src/package-manager.js +267 -68
  583. package/src/parser.js +32 -6
  584. package/src/policies.js +3 -3
  585. package/src/project-init.js +78 -4
  586. package/src/project.js +11 -9
  587. package/src/runtime-abi.js +23 -0
  588. package/src/runtime-adapters.js +18 -0
  589. package/src/schemas.js +24 -17
  590. package/src/semantic.js +54 -5
  591. package/src/snippets.js +60 -0
  592. package/src/spec-hints.js +56 -0
  593. package/src/spec-tree.js +241 -0
  594. package/src/spec.js +669 -305
  595. package/docs/examples/approved-design/dependencies/august/0.19.0/io/contracts.md +0 -395
  596. package/docs/examples/developer-workflow/dependencies/august/0.19.0/io/contracts.md +0 -395
  597. package/docs/examples/generic-di/dependencies/august/0.19.0/io/contracts.md +0 -395
  598. package/docs/examples/hello/dependencies/august/0.19.0/io/contracts.md +0 -395
  599. package/docs/examples/interceptors/dependencies/august/0.19.0/io/contracts.md +0 -395
  600. package/docs/examples/json-benchmark/dependencies/august/0.19.0/json/contracts.md +0 -103
  601. package/docs/examples/new-syntax/dependencies/august/0.19.0/io/contracts.md +0 -395
  602. package/docs/examples/oidc-login/dependencies/august/0.19.0/crypto/contracts.md +0 -925
  603. package/docs/examples/oidc-login/dependencies/august/0.19.0/crypto/jose.md +0 -434
  604. package/docs/examples/oidc-login/dependencies/august/0.19.0/json/contracts.md +0 -103
  605. package/docs/examples/oidc-login/dependencies/august/0.19.0/memory/store.md +0 -374
  606. package/docs/examples/oidc-login/dependencies/august/0.19.0/time/contracts.md +0 -150
  607. package/docs/examples/oidc-login/dependencies/august/0.19.0/web/contracts.md +0 -532
  608. package/docs/examples/ownership-transfer/dependencies/august/0.19.0/io/contracts.md +0 -395
  609. package/examples/approved-design/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
  610. package/examples/developer-workflow/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
  611. package/examples/generic-di/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
  612. package/examples/hello/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
  613. package/examples/interceptors/.aug-spec/august/0.19.0/io/contracts.aug +0 -36
  614. package/examples/interceptors/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
  615. package/examples/new-syntax/.aug-spec/august/0.19.0/io/contracts.aug +0 -36
  616. package/examples/new-syntax/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
  617. package/examples/oidc-login/.aug-spec/august/0.19.0/crypto/contracts.aug.md +0 -791
  618. package/examples/oidc-login/.aug-spec/august/0.19.0/crypto/jose.aug.md +0 -266
  619. package/examples/oidc-login/.aug-spec/august/0.19.0/json/contracts.aug.md +0 -55
  620. package/examples/oidc-login/.aug-spec/august/0.19.0/memory/store.aug.md +0 -250
  621. package/examples/oidc-login/.aug-spec/august/0.19.0/time/contracts.aug.md +0 -96
  622. package/examples/oidc-login/.aug-spec/august/0.19.0/web/contracts.aug.md +0 -420
  623. package/examples/ownership-transfer/.aug-spec/august/0.19.0/io/contracts.aug +0 -36
  624. package/examples/ownership-transfer/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
  625. /package/examples/oidc-login/.aug-spec/{august/0.19.0/memory → packages/@git/url_0eb7c89453c87681ed15/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301}/store.aug +0 -0
  626. /package/examples/oidc-login/.aug-spec/{august/0.19.0/json → packages/@git/url_2d3c37c690c0fa115be1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301}/contracts.aug +0 -0
  627. /package/examples/oidc-login/.aug-spec/{august/0.19.0/web → packages/@git/url_897efafd565158fc4908/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301}/contracts.aug +0 -0
  628. /package/examples/oidc-login/.aug-spec/{august/0.19.0/time → packages/@git/url_c092cd151499c4e1d8a1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301}/contracts.aug +0 -0
@@ -1,207 +1,71 @@
1
1
  <!-- Generated by aug spec. Edit the August source, then regenerate. -->
2
2
 
3
- # `keys.aug` specification
4
-
5
- August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
6
-
7
- ## In this file
8
-
9
- - [`KeyError`](keys.aug.md#symbol-KeyError) is a class implementing `Error`.
10
- - [`SigningKeys`](keys.aug.md#symbol-SigningKeys) is a capability interface.
11
- - [`MemorySigningKeys`](keys.aug.md#symbol-MemorySigningKeys) is a class implementing `SigningKeys`.
12
- - [`initializeKeys`](keys.aug.md#symbol-initializeKeys) is a function.
3
+ # `keys.aug`
13
4
 
14
5
  <a id="symbol-KeyError"></a>
6
+ ## `KeyError` · class · [source](keys.aug#L4)
15
7
 
16
- ## `KeyError`
17
-
18
- [source](keys.aug#L3)
19
-
20
- Behavioral class.
21
-
22
- Satisfies `Error`.
8
+ It implements `Error`.
23
9
 
24
10
  <a id="symbol-SigningKeys"></a>
25
-
26
- ## `SigningKeys`
27
-
28
- [source](keys.aug#L6)
29
-
30
- Capability interface.
31
-
32
- **Author documentation**
11
+ ## `SigningKeys` · capability interface · [source](keys.aug#L7)
33
12
 
34
13
  Keys are initialized explicitly in main and expose distinct provider and session roles.
35
14
 
36
15
  <a id="symbol-SigningKeys.configure"></a>
16
+ ### `SigningKeys.configure` · [source](keys.aug#L8)
37
17
 
38
- ### `SigningKeys.configure`
39
-
40
- [source](keys.aug#L7)
41
-
42
- **Inputs**
43
-
44
- - `provider` (`RsaPrivateKey`) — required labeled input.
45
- - `session` (`RsaPrivateKey`) — required labeled input.
46
-
47
- Returns: no value.
48
-
49
- Capabilities: [`SigningKeys.configure`](keys.aug.md#symbol-SigningKeys.configure).
50
-
51
- Can fail with `KeyError`. Callers must catch or propagate these errors.
52
-
53
- Interface contract. A selected implementation supplies the behavior.
18
+ It takes `provider` and `session` as `RsaPrivateKey`. It can call [`SigningKeys.configure`](keys.aug.md#symbol-SigningKeys.configure). Failures can raise [`KeyError`](keys.aug.md#symbol-KeyError).
54
19
 
55
20
  <a id="symbol-SigningKeys.provider"></a>
21
+ ### `SigningKeys.provider` · [source](keys.aug#L9)
56
22
 
57
- ### `SigningKeys.provider`
58
-
59
- [source](keys.aug#L8)
60
-
61
- Returns: `RsaPrivateKey`.
62
-
63
- Capabilities: [`SigningKeys.provider`](keys.aug.md#symbol-SigningKeys.provider).
64
-
65
- Can fail with `KeyError`. Callers must catch or propagate these errors.
66
-
67
- Interface contract. A selected implementation supplies the behavior.
23
+ It returns `RsaPrivateKey`. It can call [`SigningKeys.provider`](keys.aug.md#symbol-SigningKeys.provider). Failures can raise [`KeyError`](keys.aug.md#symbol-KeyError).
68
24
 
69
25
  <a id="symbol-SigningKeys.session"></a>
26
+ ### `SigningKeys.session` · [source](keys.aug#L10)
70
27
 
71
- ### `SigningKeys.session`
72
-
73
- [source](keys.aug#L9)
74
-
75
- Returns: `RsaPrivateKey`.
76
-
77
- Capabilities: [`SigningKeys.session`](keys.aug.md#symbol-SigningKeys.session).
78
-
79
- Can fail with `KeyError`. Callers must catch or propagate these errors.
80
-
81
- Interface contract. A selected implementation supplies the behavior.
28
+ It returns `RsaPrivateKey`. It can call [`SigningKeys.session`](keys.aug.md#symbol-SigningKeys.session). Failures can raise [`KeyError`](keys.aug.md#symbol-KeyError).
82
29
 
83
30
  <a id="symbol-MemorySigningKeys"></a>
31
+ ## `MemorySigningKeys` · class · [source](keys.aug#L12)
84
32
 
85
- ## `MemorySigningKeys`
86
-
87
- [source](keys.aug#L11)
88
-
89
- Behavioral class.
90
-
91
- Satisfies [`SigningKeys`](keys.aug.md#symbol-SigningKeys).
92
-
93
- **Field initialization**
94
-
95
- - Initialize `_keys` of type `Shared<Map<string,RsaPrivateKey>>` to call `Shared` with `value` = an empty map from `string` to `RsaPrivateKey`. Read-only storage, private to this class.
33
+ It implements [`SigningKeys`](keys.aug.md#symbol-SigningKeys). The read-only, private field `_keys` has type `Shared<Map<string,RsaPrivateKey>>` and starts as a `Shared` with `value` from an empty map from `string` to `RsaPrivateKey`.
96
34
 
97
35
  <a id="symbol-MemorySigningKeys.configure"></a>
36
+ ### `MemorySigningKeys.configure` · [source](keys.aug#L14)
98
37
 
99
- ### `MemorySigningKeys.configure`
100
-
101
- [source](keys.aug#L13)
102
-
103
- **Inputs**
104
-
105
- - `provider` (`RsaPrivateKey`) — required labeled input.
106
- - `session` (`RsaPrivateKey`) — required labeled input.
38
+ It takes `provider` and `session` as `RsaPrivateKey`. Failures can raise [`KeyError`](keys.aug.md#symbol-KeyError).
107
39
 
108
- Returns: no value.
40
+ While holding the lock on `_keys` as mutable `keys`, it checks that the number of elements in `keys` equals `0`. It raises a [`KeyError`](keys.aug.md#symbol-KeyError) at the first failed check. It stores `provider` in `keys` under `"provider"`. It stores `session` in `keys` under `"session"`.
109
41
 
110
- Capabilities: [`SigningKeys.configure`](keys.aug.md#symbol-SigningKeys.configure).
111
-
112
- Can fail with `KeyError`. Callers must catch or propagate these errors.
113
-
114
- **What it does**
115
-
116
- - Lock `_keys`, expose its mutable value as `keys`, and release the lock on every exit:
117
- - If call `length` on `keys` does not equal `0`:
118
- - Fail with call [`KeyError`](keys.aug.md#symbol-KeyError). Transfer control to a matching catch or propagate the failure.
119
- - Call `set` on `keys` with `key` = `"provider"`; `value` = `provider`.
120
- - Call `set` on `keys` with `key` = `"session"`; `value` = `session`.
42
+ Release this lock when the block exits, including on return or failure.
121
43
 
122
44
  <a id="symbol-MemorySigningKeys.provider"></a>
45
+ ### `MemorySigningKeys.provider` · [source](keys.aug#L20)
123
46
 
124
- ### `MemorySigningKeys.provider`
125
-
126
- [source](keys.aug#L19)
47
+ Failures can raise [`KeyError`](keys.aug.md#symbol-KeyError).
127
48
 
128
- Returns: `RsaPrivateKey`.
49
+ While holding the lock on `_keys` as mutable `keys`, it obtains the value under `"provider"` in `keys`. If no value is found, it raises a [`KeyError`](keys.aug.md#symbol-KeyError). The non-null result becomes `key`. It returns `key`.
129
50
 
130
- Capabilities: [`SigningKeys.provider`](keys.aug.md#symbol-SigningKeys.provider).
131
-
132
- Can fail with `KeyError`. Callers must catch or propagate these errors.
133
-
134
- **What it does**
135
-
136
- - Lock `_keys`, expose its mutable value as `keys`, and release the lock on every exit:
137
- - Select the matching case for call `get` on `keys` with `key` = `"provider"`:
138
- - A null value, including omitted optional input:
139
- - Fail with call [`KeyError`](keys.aug.md#symbol-KeyError). Transfer control to a matching catch or propagate the failure.
140
- - A present, non-null value, named `key`:
141
- - Return `key`.
51
+ Release this lock when the block exits, including on return or failure.
142
52
 
143
53
  <a id="symbol-MemorySigningKeys.session"></a>
54
+ ### `MemorySigningKeys.session` · [source](keys.aug#L27)
144
55
 
145
- ### `MemorySigningKeys.session`
146
-
147
- [source](keys.aug#L26)
148
-
149
- Returns: `RsaPrivateKey`.
150
-
151
- Capabilities: [`SigningKeys.session`](keys.aug.md#symbol-SigningKeys.session).
152
-
153
- Can fail with `KeyError`. Callers must catch or propagate these errors.
56
+ Failures can raise [`KeyError`](keys.aug.md#symbol-KeyError).
154
57
 
155
- **What it does**
58
+ While holding the lock on `_keys` as mutable `keys`, it obtains the value under `"session"` in `keys`. If no value is found, it raises a [`KeyError`](keys.aug.md#symbol-KeyError). The non-null result becomes `key`. It returns `key`.
156
59
 
157
- - Lock `_keys`, expose its mutable value as `keys`, and release the lock on every exit:
158
- - Select the matching case for call `get` on `keys` with `key` = `"session"`:
159
- - A null value, including omitted optional input:
160
- - Fail with call [`KeyError`](keys.aug.md#symbol-KeyError). Transfer control to a matching catch or propagate the failure.
161
- - A present, non-null value, named `key`:
162
- - Return `key`.
60
+ Release this lock when the block exits, including on return or failure.
163
61
 
164
62
  <a id="symbol-initializeKeys"></a>
63
+ ## `initializeKeys` · [source](keys.aug#L35)
165
64
 
166
- ## `initializeKeys`
167
-
168
- [source](keys.aug#L34)
169
-
170
- **Inputs**
171
-
172
- - `crypto` ([`Crypto`](../.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto)) — injected; callers omit it.
173
- - `keys` ([`SigningKeys`](keys.aug.md#symbol-SigningKeys)) — injected; callers omit it.
174
-
175
- Returns: no value.
176
-
177
- Capabilities: [`crypto.generateRsa`](../.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.generateRsa), [`keys.configure`](keys.aug.md#symbol-SigningKeys.configure).
178
-
179
- Can fail with `CryptoError`, `KeyError`. Callers must catch or propagate these errors.
180
-
181
- **What it does**
182
-
183
- - Set `provider` to call [`Crypto.generateRsa`](../.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.generateRsa) on `crypto`.
184
- - Set `session` to call [`Crypto.generateRsa`](../.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.generateRsa) on `crypto`.
185
- - Call [`SigningKeys.configure`](keys.aug.md#symbol-SigningKeys.configure) on `keys` with `provider` = `provider`; `session` = `session`.
186
-
187
- ## Dependencies used by this file
188
-
189
- Only referenced types and operations appear here. Each name links to its complete specification.
190
-
191
- ### [`Crypto`](../.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto)
192
-
193
- Capability interface from `august.crypto`.
194
-
195
- - [`Crypto.generateRsa`](../.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.generateRsa) (no caller inputs) → `RsaPrivateKey`; can fail with `CryptoError`.
196
-
197
- ## Built-in operations used by this file
198
-
199
- - `Map<string, RsaPrivateKey>.get` (`key`: `string`) → `optional RsaPrivateKey`: Read a value by key; an absent key returns null. contains distinguishes an absent key from a stored null.
200
- - `Map<string, RsaPrivateKey>.length` (no inputs) → `int`: Read the number of elements.
201
- - `Map<string, RsaPrivateKey>.set` (`key`: `string`, `value`: `RsaPrivateKey`) → `void`: Insert or replace an entry with exclusive mutable access. Changes the receiver.
65
+ It gets `crypto` ([`Crypto`](../.aug-spec/packages/%40git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/contracts.aug.md#symbol-Crypto)) and `keys` ([`SigningKeys`](keys.aug.md#symbol-SigningKeys)) from dependency injection. Failures can raise `CryptoError` and [`KeyError`](keys.aug.md#symbol-KeyError). It sets `provider` and `session` separately, each to [`crypto.generateRsa`](../.aug-spec/packages/%40git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/contracts.aug.md#symbol-Crypto.generateRsa). It calls [`keys.configure`](keys.aug.md#symbol-SigningKeys.configure) with `provider` and `session`.
202
66
 
203
- [Full built-in reference](https://greenpandastudios.github.io/augscript/language-constructs).
67
+ ## Dependencies
204
68
 
205
- ## Shared language rules
69
+ It uses [`Crypto`](../.aug-spec/packages/%40git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/contracts.aug.md#symbol-Crypto) ([`generateRsa`](../.aug-spec/packages/%40git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/contracts.aug.md#symbol-Crypto.generateRsa)) from `crypto`.
206
70
 
207
- See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
71
+ Built-in operations follow the [language reference](https://greenpandastudios.github.io/augscript/language-constructs).
@@ -1,4 +1,5 @@
1
+ // aug-spec: "settings.aug.md" explains this file. Read it before changes; refresh with aug spec.
1
2
  /** Explicit loopback development settings. The provider accepts one registered client and its exact callback URI. */
2
3
  record Settings(string baseUrl, string issuer, string clientId, string callback, int sessionSeconds, bool secureCookies)
3
- settings() returns Settings:
4
+ settings() :
4
5
  return Settings(baseUrl="http://127.0.0.1:8787", issuer="http://127.0.0.1:8787/provider", clientId="august-login-app", callback="http://127.0.0.1:8787/login/callback", sessionSeconds=900, secureCookies=false)
@@ -1,47 +1,13 @@
1
1
  <!-- Generated by aug spec. Edit the August source, then regenerate. -->
2
2
 
3
- # `settings.aug` specification
4
-
5
- August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
6
-
7
- ## In this file
8
-
9
- - [`Settings`](settings.aug.md#symbol-Settings) is an immutable record.
10
- - [`settings`](settings.aug.md#symbol-settings) is a function returning `Settings`.
3
+ # `settings.aug`
11
4
 
12
5
  <a id="symbol-Settings"></a>
6
+ ## `Settings` · immutable record · [source](settings.aug#L3)
13
7
 
14
- ## `Settings`
15
-
16
- [source](settings.aug#L2)
17
-
18
- Immutable record.
19
-
20
- **Author documentation**
21
-
22
- Explicit loopback development settings. The provider accepts one registered client and its exact callback URI.
23
-
24
- **Inputs**
25
-
26
- - `baseUrl` (`string`) — required labeled input — stored as `baseUrl` and read-only after initialization.
27
- - `issuer` (`string`) — required labeled input — stored as `issuer` and read-only after initialization.
28
- - `clientId` (`string`) — required labeled input — stored as `clientId` and read-only after initialization.
29
- - `callback` (`string`) — required labeled input — stored as `callback` and read-only after initialization.
30
- - `sessionSeconds` (`int`) — required labeled input — stored as `sessionSeconds` and read-only after initialization.
31
- - `secureCookies` (`bool`) — required labeled input — stored as `secureCookies` and read-only after initialization.
8
+ Explicit loopback development settings. The provider accepts one registered client and its exact callback URI. It takes `baseUrl`, `issuer`, `clientId`, and `callback` as strings, kept read-only, `sessionSeconds` as an integer, kept read-only, and `secureCookies` as a boolean, kept read-only.
32
9
 
33
10
  <a id="symbol-settings"></a>
11
+ ## `settings` · [source](settings.aug#L4)
34
12
 
35
- ## `settings`
36
-
37
- [source](settings.aug#L3)
38
-
39
- Returns: [`Settings`](settings.aug.md#symbol-Settings).
40
-
41
- **What it does**
42
-
43
- - Return call [`Settings`](settings.aug.md#symbol-Settings) with `baseUrl` = `"http://127.0.0.1:8787"`; `issuer` = `"http://127.0.0.1:8787/provider"`; `clientId` = `"august-login-app"`; `callback` = `"http://127.0.0.1:8787/login/callback"`; `sessionSeconds` = `900`; `secureCookies` = `false`.
44
-
45
- ## Shared language rules
46
-
47
- See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
13
+ It returns a [`Settings`](settings.aug.md#symbol-Settings) with `baseUrl` `"http://127.0.0.1:8787"`, `issuer` `"http://127.0.0.1:8787/provider"`, `clientId` `"august-login-app"`, `callback` `"http://127.0.0.1:8787/login/callback"`, `sessionSeconds` `900`, and `secureCookies` `false`.
@@ -1,5 +1,6 @@
1
+ // aug-spec: "views.aug.md" explains this file. Read it before changes; refresh with aug spec.
1
2
  /** Small server components keep each page's behavior and dependencies visible. */
2
- Page(string title, List<Html> children) returns Html:
3
+ Page(string title, List<Html> children) :
3
4
  return <html lang="en">
4
5
  <head>
5
6
  <meta charset="utf-8" />
@@ -1,34 +1,10 @@
1
1
  <!-- Generated by aug spec. Edit the August source, then regenerate. -->
2
2
 
3
- # `views.aug` specification
4
-
5
- August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
6
-
7
- ## In this file
8
-
9
- - [`Page`](views.aug.md#symbol-Page) is a function returning `Html`.
3
+ # `views.aug`
10
4
 
11
5
  <a id="symbol-Page"></a>
6
+ ## `Page` · [source](views.aug#L3)
12
7
 
13
- ## `Page`
14
-
15
- [source](views.aug#L2)
16
-
17
- **Inputs**
18
-
19
- - `title` (`string`) — required labeled input.
20
- - `children` (`List<Html>`) — required labeled input.
21
-
22
- Returns: `Html`.
23
-
24
- **What it does**
25
-
26
- - Return the HTML element `html` with `lang` = `"en"` containing the HTML element `head` containing the HTML element `meta` with `charset` = `"utf-8"` (rendered on the server with embedded text escaped), the HTML element `meta` with `name` = `"viewport"`, `content` = `"width=device-width, initial-scale=1"` (rendered on the server with embedded text escaped), the HTML element `title` containing `title`, ` — August` (rendered on the server with embedded text escaped) (rendered on the server with embedded text escaped), the HTML element `body` with `style` = `"margin:0;background:#f3f5f9;color:#17233a;font:17px system-ui,sans-serif;line-height:1.6"` containing the HTML element `main` with `style` = `"max-width:640px;margin:48px auto;padding:28px;background:white;border-radius:20px;box-shadow:0 12px 48px #17233a12"` containing the HTML element `nav` containing the HTML element `a` with `href` = `"/"`, `style` = `"color:#4852d7;font-weight:750;text-decoration:none"` containing `August · OpenID Connect` (rendered on the server with embedded text escaped) (rendered on the server with embedded text escaped), the HTML element `h1` containing `title` (rendered on the server with embedded text escaped), `children` (rendered on the server with embedded text escaped) (rendered on the server with embedded text escaped) (rendered on the server with embedded text escaped).
27
-
28
- **Author documentation**
29
-
30
- Small server components keep each page's behavior and dependencies visible.
31
-
32
- ## Shared language rules
8
+ Small server components keep each page's behavior and dependencies visible. It takes `title` as a string and `children` as `List<Html>`.
33
9
 
34
- See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
10
+ It returns the HTML element `html` with `lang` = `"en"` containing the HTML element `head` containing the HTML element `meta` with `charset` = `"utf-8"` with escaped text, the HTML element `meta` with `name` = `"viewport"`, `content` = `"width=device-width, initial-scale=1"` with escaped text, the HTML element `title` containing `title`, ` — August` with escaped text with escaped text, the HTML element `body` with `style` = `"margin:0;background:#f3f5f9;color:#17233a;font:17px system-ui,sans-serif;line-height:1.6"` containing the HTML element `main` with `style` = `"max-width:640px;margin:48px auto;padding:28px;background:white;border-radius:20px;box-shadow:0 12px 48px #17233a12"` containing the HTML element `nav` containing a link with `href` = `"/"`, `style` = `"color:#4852d7;font-weight:750;text-decoration:none"` containing `August · OpenID Connect` with escaped text with escaped text, a heading containing `title` with escaped text, `children` with escaped text with escaped text with escaped text.
@@ -1,7 +1,8 @@
1
- import Crypto and GnuTlsCrypto from august.crypto
2
- import Clock and SystemClock from august.time
3
- import HttpClient and WebHttpClient from august.web
4
- import ExpiringStore and MemoryStore from august.memory
1
+ // aug-spec: "main.aug.md" explains this file. Read it before changes; refresh with aug spec.
2
+ import Crypto and GnuTlsCrypto from crypto
3
+ import Clock and SystemClock from time
4
+ import HttpClient and WebHttpClient from web
5
+ import ExpiringStore and MemoryStore from memory
5
6
  import LoginTransaction and SessionClaims and home and me and logout and startLogin and loginCallback from client
6
7
  import AuthorizationRequest and AuthorizationCode and AccessGrant and discovery and jwks and authorize and providerLogin and token and userinfo from provider
7
8
  import SigningKeys and MemorySigningKeys and initializeKeys and KeyError from common
@@ -25,15 +26,4 @@ catch KeyError error:
25
26
  print(value="Signing keys could not be initialized")
26
27
  exit(status=1)
27
28
 
28
- serve home
29
- and me
30
- and logout
31
- and startLogin
32
- and loginCallback
33
- and discovery
34
- and jwks
35
- and authorize
36
- and providerLogin
37
- and token
38
- and userinfo
39
- on port 8787
29
+ serve home and me and logout and startLogin and loginCallback and discovery and jwks and authorize and providerLogin and token and userinfo on port 8787
@@ -1,166 +1,37 @@
1
1
  <!-- Generated by aug spec. Edit the August source, then regenerate. -->
2
2
 
3
- # `main.aug` specification
4
-
5
- August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
6
-
7
- ## In this file
8
-
9
- - Register 9 dependency providers before startup.
10
- - Run startup operations with checked error recovery.
11
- - Serve 11 HTTP routes.
3
+ # `main.aug`
12
4
 
13
5
  ## HTTP configuration
14
6
 
15
- Listen on `127.0.0.1`. Limit request bodies to 16384 bytes and buffered responses to 1048576 bytes.
16
-
17
- Serve the OpenAPI document at `/openapi.json` and API documentation at `/docs`.
18
-
19
- ## Dependency providers
20
-
21
- Register these providers before startup. Their declaration order does not set initialization order; shared instances initialize in dependency order.
22
-
23
- - Provide [`GnuTlsCrypto`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-GnuTlsCrypto) when `Crypto` is requested. Reuse one instance.
24
- - Provide [`SystemClock`](.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-SystemClock) when `Clock` is requested. Reuse one instance.
25
- - Provide [`WebHttpClient`](.aug-spec/august/0.19.0/web/contracts.aug.md#symbol-WebHttpClient) when `HttpClient` is requested. Reuse one instance.
26
- - Provide [`MemorySigningKeys`](common/keys.aug.md#symbol-MemorySigningKeys) when `SigningKeys` is requested. Reuse one instance. Permit explicit shared mutation.
27
- - Provide [`MemoryStore<LoginTransaction>`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-MemoryStore) when `ExpiringStore<LoginTransaction>` is requested. Reuse one instance. Permit explicit shared mutation.
28
- - Provide [`MemoryStore<AuthorizationRequest>`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-MemoryStore) when `ExpiringStore<AuthorizationRequest>` is requested. Reuse one instance. Permit explicit shared mutation.
29
- - Provide [`MemoryStore<AuthorizationCode>`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-MemoryStore) when `ExpiringStore<AuthorizationCode>` is requested. Reuse one instance. Permit explicit shared mutation.
30
- - Provide [`MemoryStore<SessionClaims>`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-MemoryStore) when `ExpiringStore<SessionClaims>` is requested. Reuse one instance. Permit explicit shared mutation.
31
- - Provide [`MemoryStore<AccessGrant>`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-MemoryStore) when `ExpiringStore<AccessGrant>` is requested. Reuse one instance. Permit explicit shared mutation.
32
-
33
- ## Startup, in source order
34
-
35
- - Try these operations:
36
- - Call [`initializeKeys`](common/keys.aug.md#symbol-initializeKeys); inject `crypto` from `Crypto`, `keys` from `SigningKeys`.
37
- - If they fail with `CryptoError`, name the failure `error` and recover:
38
- - Call `print` with `value` = `"Cryptographic initialization failed"`.
39
- - Call `exit` with `status` = `1`.
40
- - If they fail with [`KeyError`](common/keys.aug.md#symbol-KeyError), name the failure `error` and recover:
41
- - Call `print` with `value` = `"Signing keys could not be initialized"`.
42
- - Call `exit` with `status` = `1`.
43
- - Serve [`home`](client/endpoints.aug.md#symbol-home), [`me`](client/endpoints.aug.md#symbol-me), [`logout`](client/logout.aug.md#symbol-logout), [`startLogin`](client/login.aug.md#symbol-startLogin), [`loginCallback`](client/login.aug.md#symbol-loginCallback), [`discovery`](provider/discovery.aug.md#symbol-discovery), [`jwks`](provider/discovery.aug.md#symbol-jwks), [`authorize`](provider/authorization.aug.md#symbol-authorize), [`providerLogin`](provider/authorization.aug.md#symbol-providerLogin), [`token`](provider/token.aug.md#symbol-token), [`userinfo`](provider/userinfo.aug.md#symbol-userinfo) on port `8787`.
44
-
45
- ## Dependencies used by this file
46
-
47
- Only referenced types and operations appear here. Each name links to its complete specification.
48
-
49
- ### [`GnuTlsCrypto`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-GnuTlsCrypto)
50
-
51
- Class from `august.crypto`.
52
-
53
- Used as a type or provider.
54
-
55
- ### [`MemoryStore`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-MemoryStore)
56
-
57
- Class from `august.memory`.
58
-
59
- Used as a type or provider.
60
-
61
- ### [`SystemClock`](.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-SystemClock)
62
-
63
- Class from `august.time`.
64
-
65
- Used as a type or provider.
66
-
67
- ### [`WebHttpClient`](.aug-spec/august/0.19.0/web/contracts.aug.md#symbol-WebHttpClient)
68
-
69
- Class from `august.web`.
70
-
71
- Used as a type or provider.
72
-
73
- ### [`home`](client/endpoints.aug.md#symbol-home)
74
-
75
- Function from `client`.
76
-
77
- - [`home`](client/endpoints.aug.md#symbol-home) (`token`: `optional string` from HTTP cookie `aug_session`) → `HttpResponse<Html>`; inject `crypto`: [`Crypto`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto), `clock`: [`Clock`](.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-Clock), `keys`: [`SigningKeys`](common/keys.aug.md#symbol-SigningKeys), `sessions`: [`ExpiringStore<SessionClaims>`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore); uses [`crypto.publicRsa`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.publicRsa), [`crypto.decodeBase64url`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.decodeBase64url), [`crypto.verifyRsa`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.verifyRsa), [`crypto.equal`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.equal), [`clock.now`](.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-Clock.now), [`keys.session`](common/keys.aug.md#symbol-SigningKeys.session), [`sessions.get`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore.get); can fail with `KeyError`, `TimeError`, `HttpError`.
78
-
79
- ### [`me`](client/endpoints.aug.md#symbol-me)
80
-
81
- Function from `client`.
82
-
83
- - [`me`](client/endpoints.aug.md#symbol-me) (`token`: `optional string` from HTTP cookie `aug_session`) → `HttpResponse<UserInfo>`; inject `crypto`: [`Crypto`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto), `clock`: [`Clock`](.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-Clock), `keys`: [`SigningKeys`](common/keys.aug.md#symbol-SigningKeys), `sessions`: [`ExpiringStore<SessionClaims>`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore); uses [`crypto.publicRsa`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.publicRsa), [`crypto.decodeBase64url`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.decodeBase64url), [`crypto.verifyRsa`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.verifyRsa), [`crypto.equal`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.equal), [`clock.now`](.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-Clock.now), [`keys.session`](common/keys.aug.md#symbol-SigningKeys.session), [`sessions.get`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore.get); can fail with `SessionError`, `KeyError`, `TimeError`, `HttpError`.
84
-
85
- ### [`loginCallback`](client/login.aug.md#symbol-loginCallback)
86
-
87
- Function from `client`.
88
-
89
- - [`loginCallback`](client/login.aug.md#symbol-loginCallback) (`code`: `string` from HTTP query, `state`: `string` from HTTP query, `browser`: `optional string` from HTTP cookie `aug_login`) → `HttpResponse<Html>`; inject `crypto`: [`Crypto`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto), `clock`: [`Clock`](.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-Clock), `client`: [`HttpClient`](.aug-spec/august/0.19.0/web/contracts.aug.md#symbol-HttpClient), `keys`: [`SigningKeys`](common/keys.aug.md#symbol-SigningKeys), `transactions`: [`ExpiringStore<LoginTransaction>`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore), `sessions`: [`ExpiringStore<SessionClaims>`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore); uses [`crypto.equal`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.equal), [`crypto.random`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.random), [`crypto.signRsa`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.signRsa), [`crypto.decodeBase64url`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.decodeBase64url), [`crypto.importRsa`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.importRsa), [`crypto.verifyRsa`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.verifyRsa), [`clock.now`](.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-Clock.now), [`client.request`](.aug-spec/august/0.19.0/web/contracts.aug.md#symbol-HttpClient.request), [`keys.session`](common/keys.aug.md#symbol-SigningKeys.session), [`transactions.take`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore.take), [`sessions.put`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore.put); can fail with `SessionError`, `CryptoError`, `TimeError`, `KeyError`, `StoreFull`, `JwtError`, `JsonError`, `HttpError`.
90
-
91
- ### [`startLogin`](client/login.aug.md#symbol-startLogin)
92
-
93
- Function from `client`.
94
-
95
- - [`startLogin`](client/login.aug.md#symbol-startLogin) (no caller inputs) → `HttpResponse<Html>`; inject `crypto`: [`Crypto`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto), `clock`: [`Clock`](.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-Clock), `client`: [`HttpClient`](.aug-spec/august/0.19.0/web/contracts.aug.md#symbol-HttpClient), `transactions`: [`ExpiringStore<LoginTransaction>`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore); uses [`crypto.random`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.random), [`crypto.sha256`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.sha256), [`clock.now`](.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-Clock.now), [`client.request`](.aug-spec/august/0.19.0/web/contracts.aug.md#symbol-HttpClient.request), [`transactions.put`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore.put); can fail with `SessionError`, `CryptoError`, `TimeError`, `StoreFull`, `HttpError`.
96
-
97
- ### [`logout`](client/logout.aug.md#symbol-logout)
98
-
99
- Function from `client`.
100
-
101
- - [`logout`](client/logout.aug.md#symbol-logout) (`input`: [`LogoutForm`](client/contracts.aug.md#symbol-LogoutForm) from HTTP form, `token`: `optional string` from HTTP cookie `aug_session`, `origin`: `optional string` from HTTP header) → `HttpResponse<Html>`; inject `crypto`: [`Crypto`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto), `clock`: [`Clock`](.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-Clock), `keys`: [`SigningKeys`](common/keys.aug.md#symbol-SigningKeys), `sessions`: [`ExpiringStore<SessionClaims>`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore); uses [`crypto.publicRsa`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.publicRsa), [`crypto.decodeBase64url`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.decodeBase64url), [`crypto.verifyRsa`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.verifyRsa), [`crypto.equal`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.equal), [`clock.now`](.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-Clock.now), [`keys.session`](common/keys.aug.md#symbol-SigningKeys.session), [`sessions.get`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore.get), [`sessions.take`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore.take); can fail with `SessionError`, `KeyError`, `TimeError`, `CryptoError`, `HttpError`.
102
-
103
- ### [`KeyError`](common/keys.aug.md#symbol-KeyError)
104
-
105
- Class from `common`.
106
-
107
- Used as a type or provider.
108
-
109
- ### [`MemorySigningKeys`](common/keys.aug.md#symbol-MemorySigningKeys)
110
-
111
- Class from `common`.
112
-
113
- Used as a type or provider.
114
-
115
- ### [`initializeKeys`](common/keys.aug.md#symbol-initializeKeys)
116
-
117
- Function from `common`.
118
-
119
- - [`initializeKeys`](common/keys.aug.md#symbol-initializeKeys) (no caller inputs) → `void`; inject `crypto`: [`Crypto`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto), `keys`: [`SigningKeys`](common/keys.aug.md#symbol-SigningKeys); uses [`crypto.generateRsa`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.generateRsa), [`keys.configure`](common/keys.aug.md#symbol-SigningKeys.configure); can fail with `CryptoError`, `KeyError`.
120
-
121
- ### [`authorize`](provider/authorization.aug.md#symbol-authorize)
122
-
123
- Function from `provider`.
124
-
125
- - [`authorize`](provider/authorization.aug.md#symbol-authorize) (`response_type`: `string` from HTTP query, `client_id`: `string` from HTTP query, `redirect_uri`: `string` from HTTP query, `requestedScope`: `string` from HTTP query `scope`, `state`: `string` from HTTP query, `nonce`: `string` from HTTP query, `code_challenge`: `string` from HTTP query, `code_challenge_method`: `string` from HTTP query) → `HttpResponse<Html>`; inject `crypto`: [`Crypto`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto), `clock`: [`Clock`](.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-Clock), `requests`: [`ExpiringStore<AuthorizationRequest>`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore); uses [`crypto.random`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.random), [`crypto.decodeBase64url`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.decodeBase64url), [`clock.now`](.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-Clock.now), [`requests.put`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore.put); can fail with `LoginError`, `CryptoError`, `TimeError`, `StoreFull`, `HttpError`.
126
-
127
- ### [`providerLogin`](provider/authorization.aug.md#symbol-providerLogin)
128
-
129
- Function from `provider`.
130
-
131
- - [`providerLogin`](provider/authorization.aug.md#symbol-providerLogin) (`form`: [`LoginForm`](provider/contracts.aug.md#symbol-LoginForm) from HTTP form, `browser`: `optional string` from HTTP cookie `aug_authorize`, `origin`: `optional string` from HTTP header `origin`) → `HttpResponse<Html>`; inject `crypto`: [`Crypto`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto), `clock`: [`Clock`](.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-Clock), `requests`: [`ExpiringStore<AuthorizationRequest>`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore), `codes`: [`ExpiringStore<AuthorizationCode>`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore); uses [`crypto.equal`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.equal), [`crypto.random`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.random), [`crypto.passwordHash`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.passwordHash), [`crypto.decodeBase64url`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.decodeBase64url), [`clock.now`](.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-Clock.now), [`requests.take`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore.take), [`codes.put`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore.put); can fail with `CryptoError`, `TimeError`, `StoreFull`, `HttpError`.
132
-
133
- ### [`discovery`](provider/discovery.aug.md#symbol-discovery)
134
-
135
- Function from `provider`.
7
+ Listen on `127.0.0.1`. Limit request bodies to 16384 bytes and buffered responses to 1048576 bytes. Serve OpenAPI at `/openapi.json` and API docs at `/docs`.
136
8
 
137
- - [`discovery`](provider/discovery.aug.md#symbol-discovery) (no caller inputs) → [`Discovery`](provider/discovery.aug.md#symbol-Discovery).
9
+ ## Providers
138
10
 
139
- ### [`jwks`](provider/discovery.aug.md#symbol-jwks)
11
+ `Crypto` is provided by [`GnuTlsCrypto`](.aug-spec/packages/%40git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/contracts.aug.md#symbol-GnuTlsCrypto). The same instance is shared. `Clock` is provided by [`SystemClock`](.aug-spec/packages/%40git/url_c092cd151499c4e1d8a1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.aug.md#symbol-SystemClock). The same instance is shared.
140
12
 
141
- Function from `provider`.
13
+ `HttpClient` is provided by [`WebHttpClient`](.aug-spec/packages/%40git/url_897efafd565158fc4908/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.aug.md#symbol-WebHttpClient). The same instance is shared.
142
14
 
143
- - [`jwks`](provider/discovery.aug.md#symbol-jwks) (no caller inputs) → [`RsaJwks`](.aug-spec/august/0.19.0/crypto/jose.aug.md#symbol-RsaJwks); inject `crypto`: [`Crypto`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto), `keys`: [`SigningKeys`](common/keys.aug.md#symbol-SigningKeys); uses [`keys.provider`](common/keys.aug.md#symbol-SigningKeys.provider), [`crypto.publicRsa`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.publicRsa), [`crypto.exportRsa`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.exportRsa); can fail with `KeyError`, `CryptoError`.
15
+ `SigningKeys` is provided by [`MemorySigningKeys`](common/keys.aug.md#symbol-MemorySigningKeys). The same instance is shared. Shared mutation is allowed.
144
16
 
145
- ### [`token`](provider/token.aug.md#symbol-token)
17
+ `ExpiringStore<LoginTransaction>` is provided by [`MemoryStore<LoginTransaction>`](.aug-spec/packages/%40git/url_0eb7c89453c87681ed15/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/store.aug.md#symbol-MemoryStore). The same instance is shared. Shared mutation is allowed.
146
18
 
147
- Function from `provider`.
19
+ `ExpiringStore<AuthorizationRequest>` is provided by [`MemoryStore<AuthorizationRequest>`](.aug-spec/packages/%40git/url_0eb7c89453c87681ed15/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/store.aug.md#symbol-MemoryStore). The same instance is shared. Shared mutation is allowed.
148
20
 
149
- - [`token`](provider/token.aug.md#symbol-token) (`http`: `HttpRequest` from HTTP request) → `HttpResponse<Json>`; inject `crypto`: [`Crypto`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto), `clock`: [`Clock`](.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-Clock), `keys`: [`SigningKeys`](common/keys.aug.md#symbol-SigningKeys), `codes`: [`ExpiringStore<AuthorizationCode>`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore), `access`: [`ExpiringStore<AccessGrant>`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore); uses [`crypto.sha256`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.sha256), [`crypto.equal`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.equal), [`crypto.random`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.random), [`crypto.signRsa`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.signRsa), [`clock.now`](.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-Clock.now), [`keys.provider`](common/keys.aug.md#symbol-SigningKeys.provider), [`codes.take`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore.take), [`access.put`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore.put); can fail with `CryptoError`, `TimeError`, `KeyError`, `JwtError`, `StoreFull`, `HttpError`.
21
+ `ExpiringStore<AuthorizationCode>` is provided by [`MemoryStore<AuthorizationCode>`](.aug-spec/packages/%40git/url_0eb7c89453c87681ed15/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/store.aug.md#symbol-MemoryStore). The same instance is shared. Shared mutation is allowed.
150
22
 
151
- ### [`userinfo`](provider/userinfo.aug.md#symbol-userinfo)
23
+ `ExpiringStore<SessionClaims>` is provided by [`MemoryStore<SessionClaims>`](.aug-spec/packages/%40git/url_0eb7c89453c87681ed15/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/store.aug.md#symbol-MemoryStore). The same instance is shared. Shared mutation is allowed.
152
24
 
153
- Function from `provider`.
25
+ `ExpiringStore<AccessGrant>` is provided by [`MemoryStore<AccessGrant>`](.aug-spec/packages/%40git/url_0eb7c89453c87681ed15/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/store.aug.md#symbol-MemoryStore). The same instance is shared. Shared mutation is allowed.
154
26
 
155
- - [`userinfo`](provider/userinfo.aug.md#symbol-userinfo) (`authorization`: `optional string` from HTTP header) → `HttpResponse<Json>`; inject `clock`: [`Clock`](.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-Clock), `access`: [`ExpiringStore<AccessGrant>`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore); uses [`clock.now`](.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-Clock.now), [`access.get`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore.get); can fail with `TimeError`, `HttpError`.
27
+ ## Startup
156
28
 
157
- ## Built-in operations used by this file
29
+ It tries to call [`initializeKeys`](common/keys.aug.md#symbol-initializeKeys) using injected `Crypto` for `crypto` and `SigningKeys` for `keys`. If this work raises `CryptoError`, it prints `"Cryptographic initialization failed"`; then it calls `exit` with `status` `1`. If this work raises [`KeyError`](common/keys.aug.md#symbol-KeyError), it prints `"Signing keys could not be initialized"`; then it calls `exit` with `status` `1`. It serves [`home`](client/endpoints.aug.md#symbol-home), [`me`](client/endpoints.aug.md#symbol-me), [`logout`](client/logout.aug.md#symbol-logout), [`startLogin`](client/login.aug.md#symbol-startLogin), [`loginCallback`](client/login.aug.md#symbol-loginCallback), [`discovery`](provider/discovery.aug.md#symbol-discovery), [`jwks`](provider/discovery.aug.md#symbol-jwks), [`authorize`](provider/authorization.aug.md#symbol-authorize), [`providerLogin`](provider/authorization.aug.md#symbol-providerLogin), [`token`](provider/token.aug.md#symbol-token), and [`userinfo`](provider/userinfo.aug.md#symbol-userinfo) on port `8787`.
158
30
 
159
- - `exit` (`status`: `int`) → `void`: Exit from main with a status from 0 to 255 after cancellation and cleanup.
160
- - `print` (`value`: `any`) → `void`: Composition and test output. Other callables receive Console and declare uses console.write.
31
+ ## Dependencies
161
32
 
162
- [Full built-in reference](https://greenpandastudios.github.io/augscript/language-constructs).
33
+ It uses [`MemoryStore`](.aug-spec/packages/%40git/url_0eb7c89453c87681ed15/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/store.aug.md#symbol-MemoryStore) from `memory`. It uses [`WebHttpClient`](.aug-spec/packages/%40git/url_897efafd565158fc4908/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.aug.md#symbol-WebHttpClient) from `web`. It uses [`GnuTlsCrypto`](.aug-spec/packages/%40git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/contracts.aug.md#symbol-GnuTlsCrypto) from `crypto`. It uses [`SystemClock`](.aug-spec/packages/%40git/url_c092cd151499c4e1d8a1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.aug.md#symbol-SystemClock) from `time`.
163
34
 
164
- ## Shared language rules
35
+ It uses [`home`](client/endpoints.aug.md#symbol-home), [`me`](client/endpoints.aug.md#symbol-me), [`loginCallback`](client/login.aug.md#symbol-loginCallback), [`startLogin`](client/login.aug.md#symbol-startLogin), and [`logout`](client/logout.aug.md#symbol-logout) from `client`. It uses [`KeyError`](common/keys.aug.md#symbol-KeyError), [`MemorySigningKeys`](common/keys.aug.md#symbol-MemorySigningKeys), and [`initializeKeys`](common/keys.aug.md#symbol-initializeKeys) from `common`. It uses [`authorize`](provider/authorization.aug.md#symbol-authorize), [`providerLogin`](provider/authorization.aug.md#symbol-providerLogin), [`discovery`](provider/discovery.aug.md#symbol-discovery), [`jwks`](provider/discovery.aug.md#symbol-jwks), [`token`](provider/token.aug.md#symbol-token), and [`userinfo`](provider/userinfo.aug.md#symbol-userinfo) from `provider`.
165
36
 
166
- See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
37
+ Built-in operations follow the [language reference](https://greenpandastudios.github.io/augscript/language-constructs).
@@ -10,3 +10,10 @@ openapi:
10
10
  path: /openapi.json
11
11
  docs: /docs
12
12
  output: .aug-build/openapi.json
13
+
14
+ packages:
15
+ crypto: "https://github.com/GreenPandaStudios/augscript/src/stdlib/crypto#b14a0f9aa41f1ce58bd51133bcdc424033e40d40"
16
+ json: "https://github.com/GreenPandaStudios/augscript/src/stdlib/json#v0.19.0"
17
+ memory: "https://github.com/GreenPandaStudios/augscript/src/stdlib/memory#v0.19.0"
18
+ time: "https://github.com/GreenPandaStudios/augscript/src/stdlib/time#v0.19.0"
19
+ web: "https://github.com/GreenPandaStudios/augscript/src/stdlib/web#v0.19.0"