@greenpandastudios/aug-cli 0.19.0 → 0.20.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (459) 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/compatibility.md +3 -3
  12. package/docs/contributing-benchmarks.md +38 -0
  13. package/docs/dev-containers.md +95 -0
  14. package/docs/diagnostics.md +15 -5
  15. package/docs/docker.md +174 -12
  16. package/docs/editor.md +35 -0
  17. package/docs/example-projects.json +206 -24
  18. package/docs/examples/approved-design/counters.md +34 -126
  19. package/docs/examples/approved-design/dependencies/august/0.20.1/io/contracts.md +178 -0
  20. package/docs/examples/approved-design/domain/app.md +13 -77
  21. package/docs/examples/approved-design/domain/export.md +5 -19
  22. package/docs/examples/approved-design/domain/models.md +4 -23
  23. package/docs/examples/approved-design/domain/numbers.md +24 -114
  24. package/docs/examples/approved-design/index.md +16 -7
  25. package/docs/examples/approved-design/main.md +19 -96
  26. package/docs/examples/benchmark/index.md +6 -5
  27. package/docs/examples/benchmark/main.md +7 -35
  28. package/docs/examples/cli-args/index.md +6 -5
  29. package/docs/examples/cli-args/main.md +6 -31
  30. package/docs/examples/collections/index.md +6 -5
  31. package/docs/examples/collections/main.md +7 -35
  32. package/docs/examples/collections-benchmark/index.md +6 -5
  33. package/docs/examples/collections-benchmark/main.md +7 -35
  34. package/docs/examples/cpu-benchmark/index.md +6 -5
  35. package/docs/examples/cpu-benchmark/main.md +5 -24
  36. package/docs/examples/developer-workflow/calculator.md +39 -186
  37. package/docs/examples/developer-workflow/dependencies/august/0.20.1/io/contracts.md +178 -0
  38. package/docs/examples/developer-workflow/index.md +16 -7
  39. package/docs/examples/developer-workflow/logging/console.md +10 -56
  40. package/docs/examples/developer-workflow/logging/export.md +4 -14
  41. package/docs/examples/developer-workflow/logging/logger.md +7 -43
  42. package/docs/examples/developer-workflow/main.md +17 -69
  43. package/docs/examples/drop/index.md +6 -5
  44. package/docs/examples/drop/main.md +7 -27
  45. package/docs/examples/drop/resource.md +7 -30
  46. package/docs/examples/errors/errors.md +7 -27
  47. package/docs/examples/errors/index.md +6 -5
  48. package/docs/examples/errors/main.md +7 -28
  49. package/docs/examples/ffi/index.md +6 -5
  50. package/docs/examples/ffi/main.md +6 -20
  51. package/docs/examples/ffi/native.md +8 -34
  52. package/docs/examples/generic-di/dependencies/august/0.20.1/io/contracts.md +178 -0
  53. package/docs/examples/generic-di/index.md +6 -5
  54. package/docs/examples/generic-di/main.md +9 -39
  55. package/docs/examples/generic-di/types.md +23 -92
  56. package/docs/examples/generics/index.md +6 -5
  57. package/docs/examples/generics/main.md +10 -47
  58. package/docs/examples/generics/types.md +25 -100
  59. package/docs/examples/hello/app/export.md +4 -12
  60. package/docs/examples/hello/app/greeter.md +13 -91
  61. package/docs/examples/hello/dependencies/august/0.20.1/io/contracts.md +178 -0
  62. package/docs/examples/hello/index.md +17 -6
  63. package/docs/examples/hello/logging/console.md +10 -54
  64. package/docs/examples/hello/logging/export.md +4 -14
  65. package/docs/examples/hello/logging/logger.md +7 -45
  66. package/docs/examples/hello/main.md +9 -39
  67. package/docs/examples/http-benchmark/index.md +6 -5
  68. package/docs/examples/http-benchmark/main.md +6 -20
  69. package/docs/examples/http-benchmark/routes.md +9 -31
  70. package/docs/examples/index.md +46 -29
  71. package/docs/examples/interceptors/app.md +20 -139
  72. package/docs/examples/interceptors/dependencies/august/0.20.1/io/contracts.md +178 -0
  73. package/docs/examples/interceptors/index.md +6 -5
  74. package/docs/examples/interceptors/interceptors.md +24 -148
  75. package/docs/examples/interceptors/logging.md +13 -76
  76. package/docs/examples/interceptors/main.md +10 -65
  77. package/docs/examples/json-benchmark/data.md +4 -20
  78. package/docs/examples/json-benchmark/dependencies/packages/@git/url_2d3c37c690c0fa115be1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.md +67 -0
  79. package/docs/examples/json-benchmark/index.md +7 -5
  80. package/docs/examples/json-benchmark/main-yaml.md +20 -0
  81. package/docs/examples/json-benchmark/main.md +10 -49
  82. package/docs/examples/new-syntax/console.md +10 -52
  83. package/docs/examples/new-syntax/dependencies/august/0.20.1/io/contracts.md +178 -0
  84. package/docs/examples/new-syntax/greeter.md +13 -71
  85. package/docs/examples/new-syntax/index.md +6 -5
  86. package/docs/examples/new-syntax/logger.md +7 -43
  87. package/docs/examples/new-syntax/main.md +10 -53
  88. package/docs/examples/new-syntax/math.md +6 -24
  89. package/docs/examples/oidc-login/client/contracts.md +10 -61
  90. package/docs/examples/oidc-login/client/endpoints.md +32 -154
  91. package/docs/examples/oidc-login/client/export.md +5 -23
  92. package/docs/examples/oidc-login/client/login.md +234 -344
  93. package/docs/examples/oidc-login/client/logout.md +38 -143
  94. package/docs/examples/oidc-login/client/protocol.md +183 -304
  95. package/docs/examples/oidc-login/client/session.md +41 -149
  96. package/docs/examples/oidc-login/client/views.md +13 -58
  97. package/docs/examples/oidc-login/common/export.md +6 -26
  98. package/docs/examples/oidc-login/common/headers.md +42 -72
  99. package/docs/examples/oidc-login/common/keys.md +40 -164
  100. package/docs/examples/oidc-login/common/settings.md +24 -40
  101. package/docs/examples/oidc-login/common/views.md +7 -28
  102. package/docs/examples/oidc-login/dependencies/packages/@git/url_0eb7c89453c87681ed15/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/store.md +205 -0
  103. package/docs/examples/oidc-login/dependencies/packages/@git/url_2d3c37c690c0fa115be1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.md +67 -0
  104. package/docs/examples/oidc-login/dependencies/packages/@git/url_897efafd565158fc4908/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.md +267 -0
  105. package/docs/examples/oidc-login/dependencies/packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/contracts.md +415 -0
  106. package/docs/examples/oidc-login/dependencies/packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/jose.md +271 -0
  107. package/docs/examples/oidc-login/dependencies/packages/@git/url_c092cd151499c4e1d8a1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.md +89 -0
  108. package/docs/examples/oidc-login/index.md +8 -7
  109. package/docs/examples/oidc-login/main-yaml.md +7 -0
  110. package/docs/examples/oidc-login/main.md +26 -153
  111. package/docs/examples/oidc-login/provider/authorization.md +232 -275
  112. package/docs/examples/oidc-login/provider/contracts.md +24 -146
  113. package/docs/examples/oidc-login/provider/credentials.md +24 -57
  114. package/docs/examples/oidc-login/provider/discovery.md +48 -122
  115. package/docs/examples/oidc-login/provider/export.md +11 -37
  116. package/docs/examples/oidc-login/provider/token.md +159 -237
  117. package/docs/examples/oidc-login/provider/userinfo.md +47 -102
  118. package/docs/examples/oidc-login/provider/views.md +13 -53
  119. package/docs/examples/ownership/counter.md +17 -63
  120. package/docs/examples/ownership/index.md +6 -5
  121. package/docs/examples/ownership/main.md +7 -30
  122. package/docs/examples/ownership-transfer/dependencies/august/0.20.1/io/contracts.md +178 -0
  123. package/docs/examples/ownership-transfer/index.md +6 -5
  124. package/docs/examples/ownership-transfer/main.md +10 -52
  125. package/docs/examples/ownership-transfer/resource.md +15 -67
  126. package/docs/examples/packages-app/dependencies/packages/@example/aug-math/0.1.0/arithmetic.md +12 -50
  127. package/docs/examples/packages-app/index.md +7 -6
  128. package/docs/examples/packages-app/main.md +7 -25
  129. package/docs/examples/packages-math/aug-package-json.md +1 -1
  130. package/docs/examples/packages-math/index.md +7 -6
  131. package/docs/examples/packages-math/src/arithmetic.md +12 -50
  132. package/docs/examples/packages-math/src/export.md +4 -12
  133. package/docs/examples/startup-benchmark/index.md +6 -5
  134. package/docs/examples/startup-benchmark/main.md +5 -17
  135. package/docs/examples/visibility/counter.md +19 -67
  136. package/docs/examples/visibility/index.md +6 -5
  137. package/docs/examples/visibility/main.md +7 -31
  138. package/docs/examples/weather-api/forecasts.md +168 -0
  139. package/docs/examples/weather-api/index.md +42 -0
  140. package/docs/examples/weather-api/main-yaml.md +21 -0
  141. package/docs/examples/weather-api/main.md +65 -0
  142. package/docs/examples.json +10 -0
  143. package/docs/getting-started.md +105 -2
  144. package/docs/grammar.md +6 -4
  145. package/docs/guides/change-a-module.md +64 -0
  146. package/docs/guides/index.md +27 -0
  147. package/docs/index.md +51 -29
  148. package/docs/language-conformance.md +1 -1
  149. package/docs/language-constructs.md +22 -22
  150. package/docs/language-design-audit.md +1 -1
  151. package/docs/learn/data-and-errors.md +77 -0
  152. package/docs/learn/index.md +30 -0
  153. package/docs/learn/modules-and-dependencies.md +73 -0
  154. package/docs/learn/state-and-tests.md +71 -0
  155. package/docs/learn/values-and-functions.md +62 -0
  156. package/docs/lesson-failures.json +8 -0
  157. package/docs/maintaining-docs.md +16 -4
  158. package/docs/packages.md +72 -126
  159. package/docs/performance.md +13 -41
  160. package/docs/production-readiness.md +5 -4
  161. package/docs/public/downloads/approved-design.zip +0 -0
  162. package/docs/public/downloads/benchmark.zip +0 -0
  163. package/docs/public/downloads/cli-args.zip +0 -0
  164. package/docs/public/downloads/collections-benchmark.zip +0 -0
  165. package/docs/public/downloads/collections.zip +0 -0
  166. package/docs/public/downloads/cpu-benchmark.zip +0 -0
  167. package/docs/public/downloads/developer-workflow.zip +0 -0
  168. package/docs/public/downloads/drop.zip +0 -0
  169. package/docs/public/downloads/errors.zip +0 -0
  170. package/docs/public/downloads/ffi.zip +0 -0
  171. package/docs/public/downloads/generic-di.zip +0 -0
  172. package/docs/public/downloads/generics.zip +0 -0
  173. package/docs/public/downloads/hello.zip +0 -0
  174. package/docs/public/downloads/http-benchmark.zip +0 -0
  175. package/docs/public/downloads/interceptors.zip +0 -0
  176. package/docs/public/downloads/json-benchmark.zip +0 -0
  177. package/docs/public/downloads/new-syntax.zip +0 -0
  178. package/docs/public/downloads/oidc-login.zip +0 -0
  179. package/docs/public/downloads/ownership-transfer.zip +0 -0
  180. package/docs/public/downloads/ownership.zip +0 -0
  181. package/docs/public/downloads/packages-app.zip +0 -0
  182. package/docs/public/downloads/packages-math.zip +0 -0
  183. package/docs/public/downloads/startup-benchmark.zip +0 -0
  184. package/docs/public/downloads/visibility.zip +0 -0
  185. package/docs/public/downloads/weather-api.zip +0 -0
  186. package/docs/reference.md +23 -17
  187. package/docs/releasing.md +29 -15
  188. package/docs/research/code-to-natural-language.md +108 -0
  189. package/docs/research/ecosystem-workflow.md +41 -0
  190. package/docs/research/wiki-editorial-design.md +71 -0
  191. package/docs/roadmap.md +1 -1
  192. package/docs/specifications.md +27 -11
  193. package/docs/testing.md +19 -5
  194. package/docs/tooling.md +25 -12
  195. package/docs/weather-api.md +65 -0
  196. package/docs/web.md +50 -18
  197. package/docs/writing-docs.md +49 -0
  198. package/examples/{hello/.aug-spec/august/0.19.0 → approved-design/.aug-spec/august/0.20.1}/io/contracts.aug +4 -3
  199. package/examples/approved-design/.aug-spec/august/0.20.1/io/contracts.aug.md +82 -0
  200. package/examples/approved-design/.aug-spec/manifest.json +3 -3
  201. package/examples/approved-design/counters.aug +5 -4
  202. package/examples/approved-design/counters.aug.md +25 -132
  203. package/examples/approved-design/domain/app.aug +2 -1
  204. package/examples/approved-design/domain/app.aug.md +10 -80
  205. package/examples/approved-design/domain/export.aug +1 -0
  206. package/examples/approved-design/domain/export.aug.md +4 -20
  207. package/examples/approved-design/domain/models.aug +1 -0
  208. package/examples/approved-design/domain/models.aug.md +3 -25
  209. package/examples/approved-design/domain/numbers.aug +3 -2
  210. package/examples/approved-design/domain/numbers.aug.md +19 -116
  211. package/examples/approved-design/main.aug +1 -0
  212. package/examples/approved-design/main.aug.md +12 -95
  213. package/examples/benchmark/.aug-spec/manifest.json +1 -1
  214. package/examples/benchmark/main.aug +1 -0
  215. package/examples/benchmark/main.aug.md +6 -36
  216. package/examples/cli-args/.aug-spec/manifest.json +1 -1
  217. package/examples/cli-args/main.aug +1 -0
  218. package/examples/cli-args/main.aug.md +5 -32
  219. package/examples/collections/.aug-spec/manifest.json +1 -1
  220. package/examples/collections/main.aug +1 -0
  221. package/examples/collections/main.aug.md +6 -36
  222. package/examples/{generic-di/.aug-spec/august/0.19.0 → developer-workflow/.aug-spec/august/0.20.1}/io/contracts.aug +4 -3
  223. package/examples/developer-workflow/.aug-spec/august/0.20.1/io/contracts.aug.md +82 -0
  224. package/examples/developer-workflow/.aug-spec/manifest.json +3 -3
  225. package/examples/developer-workflow/calculator.aug +3 -2
  226. package/examples/developer-workflow/calculator.aug.md +28 -189
  227. package/examples/developer-workflow/logging/console.aug +2 -1
  228. package/examples/developer-workflow/logging/console.aug.md +7 -57
  229. package/examples/developer-workflow/logging/export.aug +1 -0
  230. package/examples/developer-workflow/logging/export.aug.md +3 -15
  231. package/examples/developer-workflow/logging/logger.aug +1 -0
  232. package/examples/developer-workflow/logging/logger.aug.md +6 -46
  233. package/examples/developer-workflow/main.aug +1 -0
  234. package/examples/developer-workflow/main.aug.md +10 -68
  235. package/examples/drop/.aug-spec/manifest.json +1 -1
  236. package/examples/drop/main.aug +1 -0
  237. package/examples/drop/main.aug.md +6 -28
  238. package/examples/drop/resource.aug +1 -0
  239. package/examples/drop/resource.aug.md +6 -34
  240. package/examples/errors/.aug-spec/manifest.json +1 -1
  241. package/examples/errors/errors.aug +2 -1
  242. package/examples/errors/errors.aug.md +4 -27
  243. package/examples/errors/main.aug +1 -0
  244. package/examples/errors/main.aug.md +6 -29
  245. package/examples/ffi/.aug-spec/manifest.json +1 -1
  246. package/examples/ffi/main.aug +1 -0
  247. package/examples/ffi/main.aug.md +5 -21
  248. package/examples/ffi/native.aug +2 -1
  249. package/examples/ffi/native.aug.md +5 -35
  250. package/examples/{approved-design/.aug-spec/august/0.19.0 → generic-di/.aug-spec/august/0.20.1}/io/contracts.aug +4 -3
  251. package/examples/generic-di/.aug-spec/august/0.20.1/io/contracts.aug.md +82 -0
  252. package/examples/generic-di/.aug-spec/manifest.json +3 -3
  253. package/examples/generic-di/main.aug +1 -0
  254. package/examples/generic-di/main.aug.md +8 -40
  255. package/examples/generic-di/types.aug +3 -2
  256. package/examples/generic-di/types.aug.md +18 -97
  257. package/examples/generics/.aug-spec/manifest.json +1 -1
  258. package/examples/generics/main.aug +1 -0
  259. package/examples/generics/main.aug.md +9 -48
  260. package/examples/generics/types.aug +4 -3
  261. package/examples/generics/types.aug.md +18 -104
  262. package/examples/{developer-workflow/.aug-spec/august/0.19.0 → hello/.aug-spec/august/0.20.1}/io/contracts.aug +4 -3
  263. package/examples/hello/.aug-spec/august/0.20.1/io/contracts.aug.md +82 -0
  264. package/examples/hello/.aug-spec/manifest.json +3 -3
  265. package/examples/hello/app/export.aug +1 -0
  266. package/examples/hello/app/export.aug.md +3 -13
  267. package/examples/hello/app/greeter.aug +2 -1
  268. package/examples/hello/app/greeter.aug.md +10 -94
  269. package/examples/hello/logging/console.aug +2 -1
  270. package/examples/hello/logging/console.aug.md +7 -55
  271. package/examples/hello/logging/export.aug +1 -0
  272. package/examples/hello/logging/export.aug.md +3 -15
  273. package/examples/hello/logging/logger.aug +1 -0
  274. package/examples/hello/logging/logger.aug.md +6 -48
  275. package/examples/hello/main.aug +1 -0
  276. package/examples/hello/main.aug.md +8 -40
  277. package/examples/interceptors/.aug-spec/august/0.20.1/io/contracts.aug +37 -0
  278. package/examples/interceptors/.aug-spec/august/0.20.1/io/contracts.aug.md +82 -0
  279. package/examples/interceptors/.aug-spec/manifest.json +3 -3
  280. package/examples/interceptors/app.aug +3 -2
  281. package/examples/interceptors/app.aug.md +15 -141
  282. package/examples/interceptors/interceptors.aug +3 -2
  283. package/examples/interceptors/interceptors.aug.md +19 -152
  284. package/examples/interceptors/logging.aug +2 -1
  285. package/examples/interceptors/logging.aug.md +10 -79
  286. package/examples/interceptors/main.aug +1 -0
  287. package/examples/interceptors/main.aug.md +9 -66
  288. package/examples/new-syntax/.aug-spec/august/0.20.1/io/contracts.aug +37 -0
  289. package/examples/new-syntax/.aug-spec/august/0.20.1/io/contracts.aug.md +82 -0
  290. package/examples/new-syntax/.aug-spec/manifest.json +3 -3
  291. package/examples/new-syntax/console.aug +2 -1
  292. package/examples/new-syntax/console.aug.md +7 -53
  293. package/examples/new-syntax/greeter.aug +2 -1
  294. package/examples/new-syntax/greeter.aug.md +10 -74
  295. package/examples/new-syntax/logger.aug +1 -0
  296. package/examples/new-syntax/logger.aug.md +6 -46
  297. package/examples/new-syntax/main.aug +1 -0
  298. package/examples/new-syntax/main.aug.md +9 -54
  299. package/examples/new-syntax/math.aug +2 -1
  300. package/examples/new-syntax/math.aug.md +3 -24
  301. package/examples/oidc-login/.aug-spec/manifest.json +13 -13
  302. package/examples/oidc-login/.aug-spec/packages/@git/url_0eb7c89453c87681ed15/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/store.aug.md +71 -0
  303. package/examples/oidc-login/.aug-spec/packages/@git/url_2d3c37c690c0fa115be1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.aug.md +17 -0
  304. package/examples/oidc-login/.aug-spec/packages/@git/url_897efafd565158fc4908/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.aug.md +125 -0
  305. package/examples/oidc-login/.aug-spec/{august/0.19.0/crypto → packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40}/contracts.aug +12 -11
  306. package/examples/oidc-login/.aug-spec/packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/contracts.aug.md +244 -0
  307. package/examples/oidc-login/.aug-spec/{august/0.19.0/crypto → packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40}/jose.aug +6 -5
  308. package/examples/oidc-login/.aug-spec/packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/jose.aug.md +71 -0
  309. package/examples/oidc-login/.aug-spec/packages/@git/url_c092cd151499c4e1d8a1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.aug.md +30 -0
  310. package/examples/oidc-login/aug.lock.json +100 -0
  311. package/examples/oidc-login/client/contracts.aug +1 -0
  312. package/examples/oidc-login/client/contracts.aug.md +9 -66
  313. package/examples/oidc-login/client/endpoints.aug +6 -5
  314. package/examples/oidc-login/client/endpoints.aug.md +13 -145
  315. package/examples/oidc-login/client/export.aug +1 -0
  316. package/examples/oidc-login/client/export.aug.md +4 -24
  317. package/examples/oidc-login/client/login.aug +7 -6
  318. package/examples/oidc-login/client/login.aug.md +25 -303
  319. package/examples/oidc-login/client/logout.aug +5 -4
  320. package/examples/oidc-login/client/logout.aug.md +13 -135
  321. package/examples/oidc-login/client/protocol.aug +7 -6
  322. package/examples/oidc-login/client/protocol.aug.md +36 -283
  323. package/examples/oidc-login/client/session.aug +5 -4
  324. package/examples/oidc-login/client/session.aug.md +12 -139
  325. package/examples/oidc-login/client/views.aug +3 -2
  326. package/examples/oidc-login/client/views.aug.md +8 -57
  327. package/examples/oidc-login/common/export.aug +1 -0
  328. package/examples/oidc-login/common/export.aug.md +5 -27
  329. package/examples/oidc-login/common/headers.aug +4 -3
  330. package/examples/oidc-login/common/headers.aug.md +9 -67
  331. package/examples/oidc-login/common/keys.aug +6 -5
  332. package/examples/oidc-login/common/keys.aug.md +29 -165
  333. package/examples/oidc-login/common/settings.aug +2 -1
  334. package/examples/oidc-login/common/settings.aug.md +5 -39
  335. package/examples/oidc-login/common/views.aug +2 -1
  336. package/examples/oidc-login/common/views.aug.md +4 -28
  337. package/examples/oidc-login/main.aug +6 -16
  338. package/examples/oidc-login/main.aug.md +17 -146
  339. package/examples/oidc-login/main.yaml +7 -0
  340. package/examples/oidc-login/provider/authorization.aug +7 -6
  341. package/examples/oidc-login/provider/authorization.aug.md +23 -238
  342. package/examples/oidc-login/provider/contracts.aug +1 -0
  343. package/examples/oidc-login/provider/contracts.aug.md +23 -158
  344. package/examples/oidc-login/provider/credentials.aug +3 -2
  345. package/examples/oidc-login/provider/credentials.aug.md +9 -53
  346. package/examples/oidc-login/provider/discovery.aug +4 -3
  347. package/examples/oidc-login/provider/discovery.aug.md +11 -118
  348. package/examples/oidc-login/provider/export.aug +1 -0
  349. package/examples/oidc-login/provider/export.aug.md +6 -34
  350. package/examples/oidc-login/provider/token.aug +6 -5
  351. package/examples/oidc-login/provider/token.aug.md +16 -204
  352. package/examples/oidc-login/provider/userinfo.aug +4 -3
  353. package/examples/oidc-login/provider/userinfo.aug.md +10 -92
  354. package/examples/oidc-login/provider/views.aug +3 -2
  355. package/examples/oidc-login/provider/views.aug.md +8 -52
  356. package/examples/ownership/.aug-spec/manifest.json +1 -1
  357. package/examples/ownership/counter.aug +3 -2
  358. package/examples/ownership/counter.aug.md +12 -66
  359. package/examples/ownership/main.aug +1 -0
  360. package/examples/ownership/main.aug.md +6 -31
  361. package/examples/ownership-transfer/.aug-spec/august/0.20.1/io/contracts.aug +37 -0
  362. package/examples/ownership-transfer/.aug-spec/august/0.20.1/io/contracts.aug.md +82 -0
  363. package/examples/ownership-transfer/.aug-spec/manifest.json +3 -3
  364. package/examples/ownership-transfer/main.aug +1 -0
  365. package/examples/ownership-transfer/main.aug.md +9 -53
  366. package/examples/ownership-transfer/resource.aug +2 -1
  367. package/examples/ownership-transfer/resource.aug.md +12 -71
  368. package/examples/packages/app/.aug-spec/manifest.json +1 -1
  369. package/examples/packages/app/.aug-spec/packages/@example/aug-math/0.1.0/arithmetic.aug +2 -1
  370. package/examples/packages/app/.aug-spec/packages/@example/aug-math/0.1.0/arithmetic.aug.md +9 -51
  371. package/examples/packages/app/main.aug +1 -0
  372. package/examples/packages/app/main.aug.md +6 -26
  373. package/examples/packages/math/.aug-spec/manifest.json +1 -1
  374. package/examples/packages/math/aug-package.json +1 -1
  375. package/examples/packages/math/src/arithmetic.aug +2 -1
  376. package/examples/packages/math/src/arithmetic.aug.md +9 -51
  377. package/examples/packages/math/src/export.aug +1 -0
  378. package/examples/packages/math/src/export.aug.md +3 -13
  379. package/examples/visibility/.aug-spec/manifest.json +1 -1
  380. package/examples/visibility/counter.aug +4 -3
  381. package/examples/visibility/counter.aug.md +12 -68
  382. package/examples/visibility/main.aug +1 -0
  383. package/examples/visibility/main.aug.md +6 -32
  384. package/examples/weather-api/.aug-spec/manifest.json +8 -0
  385. package/examples/weather-api/AGENTS.md +17 -0
  386. package/examples/weather-api/README.md +19 -0
  387. package/examples/weather-api/forecasts.aug +47 -0
  388. package/examples/weather-api/forecasts.aug.md +32 -0
  389. package/examples/weather-api/main.aug +4 -0
  390. package/examples/weather-api/main.aug.md +15 -0
  391. package/examples/weather-api/main.yaml +5 -0
  392. package/examples/weather-api/weather.http +5 -0
  393. package/package.json +3 -4
  394. package/scripts/bootstrap-native.mjs +181 -106
  395. package/scripts/native-setup.mjs +98 -0
  396. package/scripts/native-toolchain.mjs +28 -0
  397. package/src/builtins.js +1 -1
  398. package/src/checker.js +259 -72
  399. package/src/cli.js +114 -20
  400. package/src/codegen.js +1 -1
  401. package/src/config.js +1 -1
  402. package/src/contracts.js +10 -0
  403. package/src/editor.js +71 -16
  404. package/src/fixes.js +90 -2
  405. package/src/formatter.js +19 -8
  406. package/src/git-packages.js +110 -0
  407. package/src/help.js +24 -23
  408. package/src/http-contracts.js +14 -0
  409. package/src/http-policies.js +5 -5
  410. package/src/libraries.js +1 -1
  411. package/src/lsp.js +14 -5
  412. package/src/native.js +19 -13
  413. package/src/navigation.js +4 -2
  414. package/src/openapi.js +5 -4
  415. package/src/package-locking.js +45 -0
  416. package/src/package-manager.js +251 -67
  417. package/src/parser.js +13 -5
  418. package/src/policies.js +3 -3
  419. package/src/project-init.js +78 -4
  420. package/src/project.js +9 -7
  421. package/src/semantic.js +46 -2
  422. package/src/snippets.js +59 -0
  423. package/src/spec-hints.js +56 -0
  424. package/src/spec-tree.js +241 -0
  425. package/src/spec.js +626 -303
  426. package/docs/examples/approved-design/dependencies/august/0.19.0/io/contracts.md +0 -395
  427. package/docs/examples/developer-workflow/dependencies/august/0.19.0/io/contracts.md +0 -395
  428. package/docs/examples/generic-di/dependencies/august/0.19.0/io/contracts.md +0 -395
  429. package/docs/examples/hello/dependencies/august/0.19.0/io/contracts.md +0 -395
  430. package/docs/examples/interceptors/dependencies/august/0.19.0/io/contracts.md +0 -395
  431. package/docs/examples/json-benchmark/dependencies/august/0.19.0/json/contracts.md +0 -103
  432. package/docs/examples/new-syntax/dependencies/august/0.19.0/io/contracts.md +0 -395
  433. package/docs/examples/oidc-login/dependencies/august/0.19.0/crypto/contracts.md +0 -925
  434. package/docs/examples/oidc-login/dependencies/august/0.19.0/crypto/jose.md +0 -434
  435. package/docs/examples/oidc-login/dependencies/august/0.19.0/json/contracts.md +0 -103
  436. package/docs/examples/oidc-login/dependencies/august/0.19.0/memory/store.md +0 -374
  437. package/docs/examples/oidc-login/dependencies/august/0.19.0/time/contracts.md +0 -150
  438. package/docs/examples/oidc-login/dependencies/august/0.19.0/web/contracts.md +0 -532
  439. package/docs/examples/ownership-transfer/dependencies/august/0.19.0/io/contracts.md +0 -395
  440. package/examples/approved-design/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
  441. package/examples/developer-workflow/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
  442. package/examples/generic-di/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
  443. package/examples/hello/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
  444. package/examples/interceptors/.aug-spec/august/0.19.0/io/contracts.aug +0 -36
  445. package/examples/interceptors/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
  446. package/examples/new-syntax/.aug-spec/august/0.19.0/io/contracts.aug +0 -36
  447. package/examples/new-syntax/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
  448. package/examples/oidc-login/.aug-spec/august/0.19.0/crypto/contracts.aug.md +0 -791
  449. package/examples/oidc-login/.aug-spec/august/0.19.0/crypto/jose.aug.md +0 -266
  450. package/examples/oidc-login/.aug-spec/august/0.19.0/json/contracts.aug.md +0 -55
  451. package/examples/oidc-login/.aug-spec/august/0.19.0/memory/store.aug.md +0 -250
  452. package/examples/oidc-login/.aug-spec/august/0.19.0/time/contracts.aug.md +0 -96
  453. package/examples/oidc-login/.aug-spec/august/0.19.0/web/contracts.aug.md +0 -420
  454. package/examples/ownership-transfer/.aug-spec/august/0.19.0/io/contracts.aug +0 -36
  455. package/examples/ownership-transfer/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
  456. /package/examples/oidc-login/.aug-spec/{august/0.19.0/memory → packages/@git/url_0eb7c89453c87681ed15/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301}/store.aug +0 -0
  457. /package/examples/oidc-login/.aug-spec/{august/0.19.0/json → packages/@git/url_2d3c37c690c0fa115be1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301}/contracts.aug +0 -0
  458. /package/examples/oidc-login/.aug-spec/{august/0.19.0/web → packages/@git/url_897efafd565158fc4908/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301}/contracts.aug +0 -0
  459. /package/examples/oidc-login/.aug-spec/{august/0.19.0/time → packages/@git/url_c092cd151499c4e1d8a1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301}/contracts.aug +0 -0
@@ -29,8 +29,9 @@ pageClass: aug-example-page
29
29
  ::: code-group
30
30
 
31
31
  ```aug [Indentation]
32
+ // aug-spec: "arithmetic.aug.md" explains this file. Read it before changes; refresh with aug spec.
32
33
  /** Add two integers. @param left First value. @param right Second value. @return Their sum. */
33
- add(int left, int right) returns int:
34
+ add(int left, int right):
34
35
  return left + right
35
36
  test add:
36
37
  when "addition":
@@ -39,8 +40,9 @@ test add:
39
40
  ```
40
41
 
41
42
  ```aug [Braces]
43
+ // aug-spec: "arithmetic.aug.md" explains this file. Read it before changes; refresh with aug spec.
42
44
  /** Add two integers. @param left First value. @param right Second value. @return Their sum. */
43
- add(int left, int right) returns int {
45
+ add(int left, int right) {
44
46
  return left + right
45
47
  }
46
48
  test add {
@@ -60,61 +62,21 @@ test add {
60
62
 
61
63
  ## Compiled specification {#specification}
62
64
 
63
- August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
65
+ ### `add` · [source](arithmetic.md#code) {#symbol-add}
64
66
 
65
- ### In this file
67
+ Add two integers. It takes `left` as an integer (First value) and `right` as an integer (Second value). It returns `int` — Their sum. It returns `left` plus `right`.
66
68
 
67
- - [`add`](arithmetic.md#symbol-add) is a function returning `int`.
68
- - [`test add`](arithmetic.md#symbol-test-20-add) is a same-file test suite.
69
+ ### `test add` · [source](arithmetic.md#code) {#symbol-test-20-add}
69
70
 
70
- ### `add` {#symbol-add}
71
+ Tests [`add`](arithmetic.md#symbol-add). Each case gets fresh setup and dependencies.
71
72
 
72
- [source](arithmetic.md#code)
73
+ #### `addition`
73
74
 
74
- **Inputs**
75
+ ##### `adds_two_integers` · [source](arithmetic.md#code)
75
76
 
76
- - `left` (`int`) — required labeled input.
77
- - `right` (`int`) — required labeled input.
77
+ The test requires [`add`](arithmetic.md#symbol-add) with `left` `2` and `right` `3` equals `5`.
78
78
 
79
- Returns: `int`.
80
-
81
- **What it does**
82
-
83
- - Return `left` plus `right`.
84
-
85
- **Author documentation**
86
-
87
- Add two integers.
88
-
89
- **Returns** Their sum.
90
-
91
- **Parameters**
92
- - `left`: First value.
93
- - `right`: Second value.
94
-
95
- ### `test add` {#symbol-test-20-add}
96
-
97
- [source](arithmetic.md#code)
98
-
99
- Same-file function tests for [`add`](arithmetic.md#symbol-add). Each case gets isolated setup and dependency bindings.
100
-
101
- #### Group `addition`
102
-
103
- ##### `adds_two_integers`
104
-
105
- [source](arithmetic.md#code)
106
-
107
- - Call `assert` with (call [`add`](arithmetic.md#symbol-add) with `left` = `2`; `right` = `3` equals `5`).
108
-
109
- ### Built-in operations used by this file
110
-
111
- - `assert` (`condition`: `bool`) → `void`: Assert a bool in a test case or its setup. Catching an assertion failure cannot make the case pass; every case must execute an assertion.
112
-
113
- [Full built-in reference](https://greenpandastudios.github.io/augscript/language-constructs).
114
-
115
- ### Shared language rules
116
-
117
- See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
79
+ Built-in operations follow the [language reference](https://greenpandastudios.github.io/augscript/language-constructs).
118
80
 
119
81
  ::::
120
82
 
@@ -29,10 +29,12 @@ pageClass: aug-example-page
29
29
  ::: code-group
30
30
 
31
31
  ```aug [Indentation]
32
+ // aug-spec: "export.aug.md" explains this file. Read it before changes; refresh with aug spec.
32
33
  export add from arithmetic
33
34
  ```
34
35
 
35
36
  ```aug [Braces]
37
+ // aug-spec: "export.aug.md" explains this file. Read it before changes; refresh with aug spec.
36
38
  export add from arithmetic
37
39
  ```
38
40
 
@@ -44,19 +46,9 @@ export add from arithmetic
44
46
 
45
47
  ## Compiled specification {#specification}
46
48
 
47
- August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
49
+ ### Exports
48
50
 
49
- ### In this file
50
-
51
- - Export `add` from this folder.
52
-
53
- ### Folder exports
54
-
55
- - Export the declaration `add` from [`arithmetic.aug`](arithmetic.md#symbol-add).
56
-
57
- ### Shared language rules
58
-
59
- See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
51
+ Export the declaration `add` from [`arithmetic.aug`](arithmetic.md#symbol-add).
60
52
 
61
53
  ::::
62
54
 
@@ -12,7 +12,7 @@ outline: [2, 3]
12
12
 
13
13
  The small program used to measure process startup.
14
14
 
15
- Read a file below to see its highlighted source and the Markdown produced by `aug spec`. Choose **Indentation** or **Braces** above the code. Both views describe the same checked program; your choice is kept when you open another file.
15
+ Open a file to read its source beside the explanation produced by `aug spec`. **Indentation** and **Braces** display the same checked program; your choice carries across file pages.
16
16
 
17
17
  ## Project files
18
18
 
@@ -21,12 +21,13 @@ Read a file below to see its highlighted source and the Markdown produced by `au
21
21
 
22
22
  ## Try this project
23
23
 
24
- From a repository checkout with August installed:
24
+ [Download this project](/downloads/startup-benchmark.zip), then extract the archive in an empty working folder. It contains the checked source, configuration, and generated specs. [Install August](../../getting-started.md) once, then run these commands. Native libraries are prepared automatically when needed:
25
25
 
26
26
  ```sh
27
- aug check benchmarks/startup
28
- aug spec benchmarks/startup
29
- aug run benchmarks/startup
27
+ cd startup-benchmark
28
+ aug check .
29
+ aug spec .
30
+ aug run .
30
31
  ```
31
32
 
32
33
  See [the performance page](../../performance.md) for measurements, input sizes, and reproduction steps.
@@ -28,10 +28,12 @@ pageClass: aug-example-page
28
28
  ::: code-group
29
29
 
30
30
  ```aug [Indentation]
31
+ // aug-spec: "main.aug.md" explains this file. Read it before changes; refresh with aug spec.
31
32
  print(value=7)
32
33
  ```
33
34
 
34
35
  ```aug [Braces]
36
+ // aug-spec: "main.aug.md" explains this file. Read it before changes; refresh with aug spec.
35
37
  print(value=7)
36
38
  ```
37
39
 
@@ -43,25 +45,11 @@ print(value=7)
43
45
 
44
46
  ## Compiled specification {#specification}
45
47
 
46
- August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
48
+ ### Startup
47
49
 
48
- ### In this file
50
+ It prints `7`.
49
51
 
50
- - Run 1 other startup step in source order.
51
-
52
- ### Startup, in source order
53
-
54
- - Call `print` with `value` = `7`.
55
-
56
- ### Built-in operations used by this file
57
-
58
- - `print` (`value`: `any`) → `void`: Composition and test output. Other callables receive Console and declare uses console.write.
59
-
60
- [Full built-in reference](https://greenpandastudios.github.io/augscript/language-constructs).
61
-
62
- ### Shared language rules
63
-
64
- See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
52
+ Built-in operations follow the [language reference](https://greenpandastudios.github.io/augscript/language-constructs).
65
53
 
66
54
  ::::
67
55
 
@@ -29,30 +29,32 @@ pageClass: aug-example-page
29
29
  ::: code-group
30
30
 
31
31
  ```aug [Indentation]
32
+ // aug-spec: "counter.aug.md" explains this file. Read it before changes; refresh with aug spec.
32
33
  interface ICounter:
33
34
  label() returns string
34
35
  Counter(mutable int value) implements ICounter:
35
- _label() returns string:
36
+ _label():
36
37
  return _prefix()
37
- label() returns string:
38
+ label():
38
39
  return self._label()
39
- _prefix() returns string:
40
+ _prefix():
40
41
  return "count"
41
42
  ```
42
43
 
43
44
  ```aug [Braces]
45
+ // aug-spec: "counter.aug.md" explains this file. Read it before changes; refresh with aug spec.
44
46
  interface ICounter {
45
47
  label() returns string
46
48
  }
47
49
  Counter(mutable int value) implements ICounter {
48
- _label() returns string {
50
+ _label() {
49
51
  return _prefix()
50
52
  }
51
- label() returns string {
53
+ label() {
52
54
  return self._label()
53
55
  }
54
56
  }
55
- _prefix() returns string {
57
+ _prefix() {
56
58
  return "count"
57
59
  }
58
60
  ```
@@ -65,77 +67,27 @@ _prefix() returns string {
65
67
 
66
68
  ## Compiled specification {#specification}
67
69
 
68
- August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
70
+ ### `ICounter` · interface · [source](counter.md#code) {#symbol-ICounter}
69
71
 
70
- ### In this file
72
+ #### `ICounter.label` · [source](counter.md#code) {#symbol-ICounter.label}
71
73
 
72
- - [`ICounter`](counter.md#symbol-ICounter) is an interface.
73
- - [`Counter`](counter.md#symbol-Counter) is a class implementing `ICounter`.
74
- - [`_prefix`](counter.md#symbol-_prefix) is a function returning `string`.
74
+ It returns `string`.
75
75
 
76
- ### `ICounter` {#symbol-ICounter}
76
+ ### `Counter` · class · [source](counter.md#code) {#symbol-Counter}
77
77
 
78
- [source](counter.md#code)
78
+ It implements [`ICounter`](counter.md#symbol-ICounter). It takes `value` as an integer, kept mutable.
79
79
 
80
- Interface.
80
+ #### `Counter._label` · [source](counter.md#code) {#symbol-Counter._label}
81
81
 
82
- #### `ICounter.label` {#symbol-ICounter.label}
82
+ It is private to its defining scope. It returns [`_prefix`](counter.md#symbol-_prefix).
83
83
 
84
- [source](counter.md#code)
84
+ #### `Counter.label` · [source](counter.md#code) {#symbol-Counter.label}
85
85
 
86
- Returns: `string`.
86
+ It returns [`self._label`](counter.md#symbol-Counter._label).
87
87
 
88
- Interface contract. A selected implementation supplies the behavior.
88
+ ### `_prefix` · [source](counter.md#code) {#symbol-_prefix}
89
89
 
90
- ### `Counter` {#symbol-Counter}
91
-
92
- [source](counter.md#code)
93
-
94
- Behavioral class.
95
-
96
- Satisfies [`ICounter`](counter.md#symbol-ICounter).
97
-
98
- **Inputs**
99
-
100
- - `value` (`int`) — required labeled input — stored as `value` and mutable.
101
-
102
- #### `Counter._label` {#symbol-Counter._label}
103
-
104
- [source](counter.md#code)
105
-
106
- Private to its defining scope.
107
-
108
- Returns: `string`.
109
-
110
- **What it does**
111
-
112
- - Return call [`_prefix`](counter.md#symbol-_prefix).
113
-
114
- #### `Counter.label` {#symbol-Counter.label}
115
-
116
- [source](counter.md#code)
117
-
118
- Returns: `string`.
119
-
120
- **What it does**
121
-
122
- - Return call [`Counter._label`](counter.md#symbol-Counter._label) on `self`.
123
-
124
- ### `_prefix` {#symbol-_prefix}
125
-
126
- [source](counter.md#code)
127
-
128
- Private to its defining scope.
129
-
130
- Returns: `string`.
131
-
132
- **What it does**
133
-
134
- - Return `"count"`.
135
-
136
- ### Shared language rules
137
-
138
- See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
90
+ It is private to its defining scope. It returns `"count"`.
139
91
 
140
92
  ::::
141
93
 
@@ -12,7 +12,7 @@ outline: [2, 3]
12
12
 
13
13
  Keep underscore-prefixed implementation details inside their scope.
14
14
 
15
- Read a file below to see its highlighted source and the Markdown produced by `aug spec`. Choose **Indentation** or **Braces** above the code. Both views describe the same checked program; your choice is kept when you open another file.
15
+ Open a file to read its source beside the explanation produced by `aug spec`. **Indentation** and **Braces** display the same checked program; your choice carries across file pages.
16
16
 
17
17
  ## Project files
18
18
 
@@ -22,12 +22,13 @@ Read a file below to see its highlighted source and the Markdown produced by `au
22
22
 
23
23
  ## Try this project
24
24
 
25
- From a repository checkout with August installed:
25
+ [Download this project](/downloads/visibility.zip), then extract the archive in an empty working folder. It contains the checked source, configuration, and generated specs. [Install August](../../getting-started.md) once, then run these commands. Native libraries are prepared automatically when needed:
26
26
 
27
27
  ```sh
28
- aug check examples/visibility
29
- aug spec examples/visibility
30
- aug run examples/visibility
28
+ cd visibility
29
+ aug check .
30
+ aug spec .
31
+ aug run .
31
32
  ```
32
33
 
33
34
  [Browse all examples](../index.md)
@@ -29,6 +29,7 @@ pageClass: aug-example-page
29
29
  ::: code-group
30
30
 
31
31
  ```aug [Indentation]
32
+ // aug-spec: "main.aug.md" explains this file. Read it before changes; refresh with aug spec.
32
33
  import Counter from counter
33
34
  counter = Counter(value=1)
34
35
  print(value=counter.label())
@@ -38,6 +39,7 @@ print(value=counter.value)
38
39
  ```
39
40
 
40
41
  ```aug [Braces]
42
+ // aug-spec: "main.aug.md" explains this file. Read it before changes; refresh with aug spec.
41
43
  import Counter from counter
42
44
  counter = Counter(value=1)
43
45
  print(value=counter.label())
@@ -55,41 +57,15 @@ print(value=counter.value)
55
57
 
56
58
  ## Compiled specification {#specification}
57
59
 
58
- August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
60
+ ### Startup
59
61
 
60
- ### In this file
62
+ It sets `counter` to a [`Counter`](counter.md#symbol-Counter) with `value` `1`. It prints [`counter.label`](counter.md#symbol-Counter.label). With temporary permission to change `counter`, it sets `counter.value` to `2`. It prints `counter.value`.
61
63
 
62
- - Run 4 other startup steps in source order.
64
+ ### Dependencies
63
65
 
64
- ### Startup, in source order
66
+ It uses [`Counter`](counter.md#symbol-Counter) ([`label`](counter.md#symbol-Counter.label) and `value`) from `counter`.
65
67
 
66
- - Set `counter` to call [`Counter`](counter.md#symbol-Counter) with `value` = `1`.
67
- - Call `print` with `value` = call [`Counter.label`](counter.md#symbol-Counter.label) on `counter`.
68
- - Grant exclusive mutable access to `counter` for this block, then end the borrow:
69
- - Set `value` of `counter` to `2`.
70
- - Call `print` with `value` = `value` of `counter`.
71
-
72
- ### Dependencies used by this file
73
-
74
- Only referenced types and operations appear here. Each name links to its complete specification.
75
-
76
- #### [`Counter`](counter.md#symbol-Counter)
77
-
78
- Class from `counter`.
79
-
80
- - Construct with `value`: `int` → [`Counter`](counter.md#symbol-Counter).
81
- - Read `value` (`int`); its owner can change it.
82
- - [`Counter.label`](counter.md#symbol-Counter.label) (no caller inputs) → `string`.
83
-
84
- ### Built-in operations used by this file
85
-
86
- - `print` (`value`: `any`) → `void`: Composition and test output. Other callables receive Console and declare uses console.write.
87
-
88
- [Full built-in reference](https://greenpandastudios.github.io/augscript/language-constructs).
89
-
90
- ### Shared language rules
91
-
92
- See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
68
+ Built-in operations follow the [language reference](https://greenpandastudios.github.io/augscript/language-constructs).
93
69
 
94
70
  ::::
95
71
 
@@ -0,0 +1,168 @@
1
+ ---
2
+ title: "forecasts.aug · Weather API"
3
+ generated: true
4
+ source: "examples/weather-api/forecasts.aug"
5
+ editLink: false
6
+ prev: false
7
+ next: false
8
+ outline: [2, 3]
9
+ pageClass: aug-example-page
10
+ ---
11
+
12
+ # `forecasts.aug`
13
+
14
+ [Weather API](index.md) · Source and specification
15
+
16
+ ::: details Files in this project
17
+
18
+ - [`main.aug`](main.md)
19
+ - [`forecasts.aug`](forecasts.md)
20
+
21
+ :::
22
+
23
+ ::::: example-compare
24
+
25
+ :::: example-code
26
+
27
+ ## Code {#code}
28
+
29
+ ::: code-group
30
+
31
+ ```aug [Indentation]
32
+ // aug-spec: "forecasts.aug.md" explains this file. Read it before changes; refresh with aug spec.
33
+ /** The JSON shape returned by the forecast endpoint. Temperatures use whole degrees. */
34
+ record WeatherForecast(string date, int temperatureC, int temperatureF, string summary)
35
+ /** Return five simulated forecasts. Fixed data keeps the example and its tests reproducible. */
36
+ endpoint GET "/weatherforecast" as weatherForecast():
37
+ return [
38
+ WeatherForecast(
39
+ date="2026-01-01",
40
+ temperatureC=0,
41
+ temperatureF=32,
42
+ summary="Freezing"
43
+ ),
44
+ WeatherForecast(
45
+ date="2026-01-02",
46
+ temperatureC=10,
47
+ temperatureF=50,
48
+ summary="Cool"
49
+ ),
50
+ WeatherForecast(
51
+ date="2026-01-03",
52
+ temperatureC=20,
53
+ temperatureF=68,
54
+ summary="Mild"
55
+ ),
56
+ WeatherForecast(
57
+ date="2026-01-04",
58
+ temperatureC=30,
59
+ temperatureF=86,
60
+ summary="Warm"
61
+ ),
62
+ WeatherForecast(
63
+ date="2026-01-05",
64
+ temperatureC=35,
65
+ temperatureF=95,
66
+ summary="Hot"
67
+ )
68
+ ]
69
+ test endpoint weatherForecast client:
70
+ when "forecasts":
71
+ it "returns_json":
72
+ response = client.request(method="GET", path="/weatherforecast")
73
+ assert(condition=response.status == 200)
74
+ it "rejects_other_methods":
75
+ response = client.request(method="POST", path="/weatherforecast")
76
+ assert(condition=response.status == 405)
77
+ ```
78
+
79
+ ```aug [Braces]
80
+ // aug-spec: "forecasts.aug.md" explains this file. Read it before changes; refresh with aug spec.
81
+ /** The JSON shape returned by the forecast endpoint. Temperatures use whole degrees. */
82
+ record WeatherForecast(string date, int temperatureC, int temperatureF, string summary)
83
+ /** Return five simulated forecasts. Fixed data keeps the example and its tests reproducible. */
84
+ endpoint GET "/weatherforecast" as weatherForecast() {
85
+ return [
86
+ WeatherForecast(
87
+ date="2026-01-01",
88
+ temperatureC=0,
89
+ temperatureF=32,
90
+ summary="Freezing"
91
+ ),
92
+ WeatherForecast(
93
+ date="2026-01-02",
94
+ temperatureC=10,
95
+ temperatureF=50,
96
+ summary="Cool"
97
+ ),
98
+ WeatherForecast(
99
+ date="2026-01-03",
100
+ temperatureC=20,
101
+ temperatureF=68,
102
+ summary="Mild"
103
+ ),
104
+ WeatherForecast(
105
+ date="2026-01-04",
106
+ temperatureC=30,
107
+ temperatureF=86,
108
+ summary="Warm"
109
+ ),
110
+ WeatherForecast(
111
+ date="2026-01-05",
112
+ temperatureC=35,
113
+ temperatureF=95,
114
+ summary="Hot"
115
+ )
116
+ ]
117
+ }
118
+ test endpoint weatherForecast client {
119
+ when "forecasts" {
120
+ it "returns_json" {
121
+ response = client.request(method="GET", path="/weatherforecast")
122
+ assert(condition=response.status == 200)
123
+ }
124
+ it "rejects_other_methods" {
125
+ response = client.request(method="POST", path="/weatherforecast")
126
+ assert(condition=response.status == 405)
127
+ }
128
+ }
129
+ }
130
+ ```
131
+
132
+ :::
133
+
134
+ ::::
135
+
136
+ :::: example-spec
137
+
138
+ ## Compiled specification {#specification}
139
+
140
+ Plain handler results default to HTTP 200 unless another status is declared. HttpResponse values choose their own status. Unhandled request failures return HTTP 500 and cancel the request tasks.
141
+
142
+ ### `WeatherForecast` · immutable record · [source](forecasts.md#code) {#symbol-WeatherForecast}
143
+
144
+ The JSON shape returned by the forecast endpoint. Temperatures use whole degrees. It takes `date` as a string, kept read-only, `temperatureC` and `temperatureF` as integers, kept read-only, and `summary` as a string, kept read-only.
145
+
146
+ ### `weatherForecast` · [source](forecasts.md#code) {#symbol-weatherForecast}
147
+
148
+ `weatherForecast` handles `GET /weatherforecast`. Return five simulated forecasts. Fixed data keeps the example and its tests reproducible. It returns a list of 5 [`WeatherForecast`](forecasts.md#symbol-WeatherForecast) records, with `(date, temperatureC, temperatureF, summary)` values of `("2026-01-01", 0, 32, "Freezing")`, `("2026-01-02", 10, 50, "Cool")`, `("2026-01-03", 20, 68, "Mild")`, `("2026-01-04", 30, 86, "Warm")`, and `("2026-01-05", 35, 95, "Hot")`, in that order.
149
+
150
+ ### `test weatherForecast client` · [source](forecasts.md#code) {#symbol-test-20-weatherForecast-20-client}
151
+
152
+ Tests [`weatherForecast`](forecasts.md#symbol-weatherForecast). Each case gets fresh setup and dependencies.
153
+
154
+ #### `forecasts`
155
+
156
+ ##### `returns_json` · [source](forecasts.md#code)
157
+
158
+ It sets `response` to `client.request` with `method` `"GET"` and `path` `"/weatherforecast"`. The test requires `response.status` equals `200`.
159
+
160
+ ##### `rejects_other_methods` · [source](forecasts.md#code)
161
+
162
+ It sets `response` to `client.request` with `method` `"POST"` and `path` `"/weatherforecast"`. The test requires `response.status` equals `405`.
163
+
164
+ Built-in operations follow the [language reference](https://greenpandastudios.github.io/augscript/language-constructs).
165
+
166
+ ::::
167
+
168
+ :::::
@@ -0,0 +1,42 @@
1
+ ---
2
+ title: "Weather API"
3
+ generated: true
4
+ source: "examples/weather-api"
5
+ editLink: false
6
+ prev: false
7
+ next: false
8
+ outline: [2, 3]
9
+ ---
10
+
11
+ # Weather API
12
+
13
+ Serve five simulated forecasts as typed JSON. The record, endpoint, and tests share a file; main.aug starts the listener and main.yaml enables OpenAPI.
14
+
15
+ Open a file to read its source beside the explanation produced by `aug spec`. **Indentation** and **Braces** display the same checked program; your choice carries across file pages.
16
+
17
+ ## Follow the program
18
+
19
+ Read [`main.aug`](main.md). Import the forecast endpoint and serve it on port 8787.
20
+
21
+ Read [`forecasts.aug`](forecasts.md). Read the response record, five fixed forecasts, and cases that exercise the endpoint pipeline.
22
+
23
+ ## Project files
24
+
25
+ - [`main.aug`](main.md)
26
+ - [`forecasts.aug`](forecasts.md)
27
+
28
+ - [`main.yaml`](main-yaml.md)
29
+
30
+ ## Try this project
31
+
32
+ [Download this project](/downloads/weather-api.zip), then extract the archive in an empty working folder. It contains the checked source, configuration, and generated specs. [Install August](../../getting-started.md) once, then run these commands. Native libraries are prepared automatically when needed:
33
+
34
+ ```sh
35
+ cd weather-api
36
+ aug check .
37
+ aug spec .
38
+ aug test .
39
+ aug run .
40
+ ```
41
+
42
+ [Browse all examples](../index.md)
@@ -0,0 +1,21 @@
1
+ ---
2
+ title: "main.yaml · Weather API"
3
+ generated: true
4
+ source: "examples/weather-api/main.yaml"
5
+ editLink: false
6
+ prev: false
7
+ next: false
8
+ outline: [2, 3]
9
+ ---
10
+
11
+ # `main.yaml`
12
+
13
+ [Weather API](index.md) · Project configuration
14
+
15
+ ```yaml
16
+ block_style: indent
17
+ openapi:
18
+ enabled: true
19
+ title: "Weather forecast API"
20
+ version: "0.1.0"
21
+ ```