@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
@@ -33,12 +33,13 @@ pageClass: aug-example-page
33
33
  ::: code-group
34
34
 
35
35
  ```aug [Indentation]
36
+ // aug-spec: "numbers.aug.md" explains this file. Read it before changes; refresh with aug spec.
36
37
  /** Raised when an input is outside the operation's domain. */
37
38
  RangeError(int value) implements Error:
38
39
  pass
39
40
  /** A pure validation layer, shared by any compatible callable. */
40
41
  interceptor Positive<T>():
41
- around(int amount) returns T unless RangeError:
42
+ around(int amount) returns T:
42
43
  if amount < 0:
43
44
  throw RangeError(value=amount)
44
45
  return next()
@@ -49,7 +50,7 @@ interceptor Positive<T>():
49
50
  * @throws RangeError A validation layer rejected a negative input.
50
51
  */
51
52
  [Positive]
52
- double(int amount) returns int:
53
+ double(int amount):
53
54
  return amount * 2
54
55
  test double:
55
56
  when "positive":
@@ -65,13 +66,14 @@ test double:
65
66
  ```
66
67
 
67
68
  ```aug [Braces]
69
+ // aug-spec: "numbers.aug.md" explains this file. Read it before changes; refresh with aug spec.
68
70
  /** Raised when an input is outside the operation's domain. */
69
71
  RangeError(int value) implements Error {
70
72
  pass
71
73
  }
72
74
  /** A pure validation layer, shared by any compatible callable. */
73
75
  interceptor Positive<T>() {
74
- around(int amount) returns T unless RangeError {
76
+ around(int amount) returns T {
75
77
  if amount < 0 {
76
78
  throw RangeError(value=amount)
77
79
  }
@@ -85,7 +87,7 @@ interceptor Positive<T>() {
85
87
  * @throws RangeError A validation layer rejected a negative input.
86
88
  */
87
89
  [Positive]
88
- double(int amount) returns int {
90
+ double(int amount) {
89
91
  return amount * 2
90
92
  }
91
93
  test double {
@@ -115,133 +117,41 @@ test double {
115
117
 
116
118
  ## Compiled specification {#specification}
117
119
 
118
- August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
120
+ ### `RangeError` · class · [source](numbers.md#code) {#symbol-RangeError}
119
121
 
120
- ### In this file
122
+ Raised when an input is outside the operation's domain. It implements `Error`. It takes `value` as an integer, kept read-only.
121
123
 
122
- - [`RangeError`](numbers.md#symbol-RangeError) is a class implementing `Error`.
123
- - [`Positive`](numbers.md#symbol-Positive) is an interceptor.
124
- - [`double`](numbers.md#symbol-double) is a function returning `int`.
125
- - [`test double`](numbers.md#symbol-test-20-double) is a same-file test suite.
124
+ ### `Positive` · interceptor · [source](numbers.md#code) {#symbol-Positive}
126
125
 
127
- ### `RangeError` {#symbol-RangeError}
126
+ A pure validation layer, shared by any compatible callable. The type parameters are `T`. Creates one interceptor per invocation. Its around operation may delegate once or finish early.
128
127
 
129
- [source](numbers.md#code)
128
+ #### `Positive.around` · [source](numbers.md#code) {#symbol-Positive.around}
130
129
 
131
- Behavioral class.
130
+ It takes `amount` as an integer. Failures can raise [`RangeError`](numbers.md#symbol-RangeError). If `amount` is negative, it raises a [`RangeError`](numbers.md#symbol-RangeError) with `value` from `amount`. It returns `next`.
132
131
 
133
- Satisfies `Error`.
132
+ ### `double` · [source](numbers.md#code) {#symbol-double}
134
133
 
135
- **Author documentation**
134
+ Double a nonnegative amount. It takes `amount` as an integer (Integer to double). It returns `int` — Twice the amount, with defined integer wrapping. Failures can raise [`RangeError`](numbers.md#symbol-RangeError) (A validation layer rejected a negative input).
136
135
 
137
- Raised when an input is outside the operation's domain.
136
+ Layers run in the declared order. Call [`Positive.around`](numbers.md#symbol-Positive.around). It returns `amount` times `2`.
138
137
 
139
- **Inputs**
138
+ ### `test double` · [source](numbers.md#code) {#symbol-test-20-double}
140
139
 
141
- - `value` (`int`) — required labeled input — stored as `value` and read-only after initialization.
140
+ Tests [`double`](numbers.md#symbol-double). Each case gets fresh setup and dependencies.
142
141
 
143
- ### `Positive` {#symbol-Positive}
142
+ #### `positive`
144
143
 
145
- [source](numbers.md#code)
144
+ ##### `doubles` · [source](numbers.md#code)
146
145
 
147
- Function or constructor middleware.
146
+ Run once for each row of a tuple containing `0`, `0`; a tuple containing `3`, `6`; a tuple containing `7`, `14`. Bind row positions to `input`, `expected`. The test requires [`double`](numbers.md#symbol-double) with `amount` from `input` equals `expected`.
148
147
 
149
- Type parameters: `T`.
148
+ ##### `rejects_negative` · [source](numbers.md#code)
150
149
 
151
- **Author documentation**
150
+ It sets `rejected` to `false`.
152
151
 
153
- A pure validation layer, shared by any compatible callable.
152
+ It tries to call [`double`](numbers.md#symbol-double) with `amount` `-1`. If this work raises [`RangeError`](numbers.md#symbol-RangeError) as `error`, it sets `rejected` to `error.value` equals `-1`. The test requires `rejected` is true.
154
153
 
155
- Create a fresh interceptor for each invocation. Its around operation can delegate once, change selected inputs, or short-circuit with a compatible result or failure.
156
-
157
- #### `Positive.around` {#symbol-Positive.around}
158
-
159
- [source](numbers.md#code)
160
-
161
- **Inputs**
162
-
163
- - `amount` (`int`) — required labeled input.
164
-
165
- Returns: `T`.
166
-
167
- Can fail with `RangeError`. Callers must catch or propagate these errors.
168
-
169
- **What it does**
170
-
171
- - If `amount` is less than `0`:
172
- - Fail with call [`RangeError`](numbers.md#symbol-RangeError) with `value` = `amount`. Transfer control to a matching catch or propagate the failure.
173
- - Return call `next`.
174
-
175
- ### `double` {#symbol-double}
176
-
177
- [source](numbers.md#code)
178
-
179
- **Inputs**
180
-
181
- - `amount` (`int`) — required labeled input.
182
-
183
- Returns: `int`.
184
-
185
- Can fail with `RangeError`. Callers must catch or propagate these errors.
186
-
187
- **Interceptors, in execution order**
188
-
189
- 1. Call [`Positive.around`](numbers.md#symbol-Positive.around). It can call the next layer or finish with its own result or failure. Unselected inputs pass through.
190
-
191
- The first layer wraps the remaining layers. HTTP policies run before wire decoding; custom interceptors run after decoding. Follow linked behavior to see its conditions, input changes, and calls to the next layer.
192
-
193
- **What it does**
194
-
195
- - Return `amount` times `2`.
196
-
197
- **Author documentation**
198
-
199
- Double a nonnegative amount.
200
-
201
- **Returns** Twice the amount, with defined integer wrapping.
202
-
203
- **Parameters**
204
- - `amount`: Integer to double.
205
-
206
- **Throws**
207
- - `RangeError`: A validation layer rejected a negative input.
208
-
209
- ### `test double` {#symbol-test-20-double}
210
-
211
- [source](numbers.md#code)
212
-
213
- Same-file function tests for [`double`](numbers.md#symbol-double). Each case gets isolated setup and dependency bindings.
214
-
215
- #### Group `positive`
216
-
217
- ##### `doubles`
218
-
219
- [source](numbers.md#code)
220
-
221
- Run once for each row of a tuple containing `0`, `0`; a tuple containing `3`, `6`; a tuple containing `7`, `14`. Bind row positions to `input`, `expected`.
222
-
223
- - Call `assert` with (call [`double`](numbers.md#symbol-double) with `amount` = `input` equals `expected`).
224
-
225
- ##### `rejects_negative`
226
-
227
- [source](numbers.md#code)
228
-
229
- - Set `rejected` of type `bool` to `false`.
230
- - Try these operations:
231
- - Call [`double`](numbers.md#symbol-double) with `amount` = `-1`.
232
- - If they fail with [`RangeError`](numbers.md#symbol-RangeError), name the failure `error` and recover:
233
- - Set `rejected` to `value` of `error` equals `-1`.
234
- - Call `assert` with `rejected` = `rejected`.
235
-
236
- ### Built-in operations used by this file
237
-
238
- - `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.
239
-
240
- [Full built-in reference](https://greenpandastudios.github.io/augscript/language-constructs).
241
-
242
- ### Shared language rules
243
-
244
- See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
154
+ Built-in operations follow the [language reference](https://greenpandastudios.github.io/augscript/language-constructs).
245
155
 
246
156
  ::::
247
157
 
@@ -10,9 +10,17 @@ outline: [2, 3]
10
10
 
11
11
  # Modules and composition
12
12
 
13
- Combine domain modules, generic values, explicit capabilities, and scoped providers.
13
+ Startup combines narrow domain exports with a scoped counter provider. Records and validation keep data and checked failures visible.
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
+
17
+ ## Follow the program
18
+
19
+ Read [`main.aug`](main.md). Follow the domain imports, provider choices, explicit scope, and checked failure before opening the implementation files.
20
+
21
+ Read [`domain/export.aug`](domain/export.md). The export file gives callers the folder's deliberate public API.
22
+
23
+ Read [`domain/numbers.aug`](domain/numbers.md). The validation interceptor rejects a negative input. Tests cover successful doubling and recovery from that failure.
16
24
 
17
25
  ## Project files
18
26
 
@@ -27,13 +35,14 @@ Read a file below to see its highlighted source and the Markdown produced by `au
27
35
 
28
36
  ## Try this project
29
37
 
30
- From a repository checkout with August installed:
38
+ [Download this project](/downloads/approved-design.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:
31
39
 
32
40
  ```sh
33
- aug check examples/approved-design
34
- aug spec examples/approved-design
35
- aug test examples/approved-design
36
- aug run examples/approved-design
41
+ cd approved-design
42
+ aug check .
43
+ aug spec .
44
+ aug test .
45
+ aug run .
37
46
  ```
38
47
 
39
48
  [Browse all examples](../index.md)
@@ -33,6 +33,7 @@ pageClass: aug-example-page
33
33
  ::: code-group
34
34
 
35
35
  ```aug [Indentation]
36
+ // aug-spec: "main.aug.md" explains this file. Read it before changes; refresh with aug spec.
36
37
  import Console and SystemConsole from august.io
37
38
  import Application and ApplicationImpl and Fruit and double and RangeError from domain
38
39
  import Counter and Counters from counters
@@ -48,7 +49,9 @@ match names.get(key=2):
48
49
  when some name:
49
50
  print(value=name)
50
51
  (code, label) to (3, "plum")
51
- print(value={Fruit(code=code, name=label), Fruit(name=label, code=code)}.length())
52
+ print(
53
+ value={Fruit(code=code, name=label), Fruit(name=label, code=code)}.length()
54
+ )
52
55
  scope:
53
56
  resolve Counter to counter
54
57
  borrow counter:
@@ -62,6 +65,7 @@ catch RangeError error:
62
65
  ```
63
66
 
64
67
  ```aug [Braces]
68
+ // aug-spec: "main.aug.md" explains this file. Read it before changes; refresh with aug spec.
65
69
  import Console and SystemConsole from august.io
66
70
  import Application and ApplicationImpl and Fruit and double and RangeError from domain
67
71
  import Counter and Counters from counters
@@ -80,7 +84,9 @@ match names.get(key=2) {
80
84
  }
81
85
  }
82
86
  (code, label) to (3, "plum")
83
- print(value={Fruit(code=code, name=label), Fruit(name=label, code=code)}.length())
87
+ print(
88
+ value={Fruit(code=code, name=label), Fruit(name=label, code=code)}.length()
89
+ )
84
90
  scope {
85
91
  resolve Counter to counter
86
92
  borrow counter {
@@ -105,110 +111,27 @@ catch RangeError error {
105
111
 
106
112
  ## Compiled specification {#specification}
107
113
 
108
- August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
114
+ ### Providers
109
115
 
110
- ### In this file
116
+ `Console` is provided by [`SystemConsole`](dependencies/august/0.20.1/io/contracts.md#symbol-SystemConsole). The same instance is shared.
111
117
 
112
- - Include providers from `Counters`.
113
- - Register 2 dependency providers before startup.
114
- - Run startup operations with checked error recovery.
115
- - Run 7 other startup steps in source order.
118
+ `Application` is provided by [`ApplicationImpl`](domain/app.md#symbol-ApplicationImpl). The same instance is shared. It requires bindings for `Console`. Include providers from [`Counters`](counters.md#symbol-Counters).
116
119
 
117
- ### Dependency providers
120
+ ### Startup
118
121
 
119
- Register these providers before startup. Their declaration order does not set initialization order; shared instances initialize in dependency order.
122
+ It sets `app` to the instance provided for `Application`. It calls [`app.start`](domain/app.md#symbol-Application.start). It sets `names` to a map with `1` mapped to `"apple"`; `2` mapped to `"pear"`. If the value under `2` in `names` is null, it prints `"missing fruit"`.
120
123
 
121
- - Provide [`SystemConsole`](dependencies/august/0.19.0/io/contracts.md#symbol-SystemConsole) when `Console` is requested. Reuse one instance.
122
- - Provide [`ApplicationImpl`](domain/app.md#symbol-ApplicationImpl) when `Application` is requested. Reuse one instance. Required dependencies: `Console`.
123
- - Include the providers from [`Counters`](counters.md#symbol-Counters) before execution.
124
+ If the value under `2` in `names` is not null, using `name` for it prints `name`. It splits a tuple containing `3`, `"plum"` into `code` and `label` in order. It prints the number of elements in a set containing a [`Fruit`](domain/models.md#symbol-Fruit) with `code` and `name` from `label`, a [`Fruit`](domain/models.md#symbol-Fruit) with `name` from `label` and `code`. Within a task and ownership scope, it sets `counter` to the instance provided for `Counter`.
124
125
 
125
- ### Startup, in source order
126
+ With temporary permission to change `counter`, it calls [`counter.increment`](counters.md#symbol-Counter.increment). It prints [`counter.value`](counters.md#symbol-Counter.value). On leaving this scope, join its child tasks and release its local values. It prints [`double`](domain/numbers.md#symbol-double) with `amount` `7`.
126
127
 
127
- - Set `app` to the instance provided for `Application`.
128
- - Call [`Application.start`](domain/app.md#symbol-Application.start) on `app`.
129
- - Set `names` to a map with `1` mapped to `"apple"`; `2` mapped to `"pear"`.
130
- - Select the matching case for call `get` on `names` with `key` = `2`:
131
- - A null value, including omitted optional input:
132
- - Call `print` with `value` = `"missing fruit"`.
133
- - A present, non-null value, named `name`:
134
- - Call `print` with `value` = `name`.
135
- - Split a tuple containing `3`, `"plum"` into `code`, `label`, in that order.
136
- - Call `print` with `value` = call `length` on a set containing call [`Fruit`](domain/models.md#symbol-Fruit) with `code` = `code`; `name` = `label`, call [`Fruit`](domain/models.md#symbol-Fruit) with `name` = `label`; `code` = `code`.
137
- - Create a dependency and task scope. Join its child tasks and release scoped values before leaving:
138
- - Set `counter` to the instance provided for `Counter`.
139
- - Grant exclusive mutable access to `counter` for this block, then end the borrow:
140
- - Call [`Counter.increment`](counters.md#symbol-Counter.increment) on `counter`.
141
- - Call `print` with `value` = call [`Counter.value`](counters.md#symbol-Counter.value) on `counter`.
142
- - Try these operations:
143
- - Call `print` with `value` = call [`double`](domain/numbers.md#symbol-double) with `amount` = `7`.
144
- - Call [`double`](domain/numbers.md#symbol-double) with `amount` = `-1`.
145
- - If they fail with [`RangeError`](domain/numbers.md#symbol-RangeError), name the failure `error` and recover:
146
- - Call `print` with `value` = `"negative amount rejected"`.
128
+ It calls [`double`](domain/numbers.md#symbol-double) with `amount` `-1`. If this work raises [`RangeError`](domain/numbers.md#symbol-RangeError), it prints `"negative amount rejected"`.
147
129
 
148
- ### Dependencies used by this file
130
+ ### Dependencies
149
131
 
150
- Only referenced types and operations appear here. Each name links to its complete specification.
132
+ It uses [`SystemConsole`](dependencies/august/0.20.1/io/contracts.md#symbol-SystemConsole) from `august.io`. It uses [`Counter`](counters.md#symbol-Counter) ([`increment`](counters.md#symbol-Counter.increment) and [`value`](counters.md#symbol-Counter.value)) and [`Counters`](counters.md#symbol-Counters) from `counters`. It uses [`Application`](domain/app.md#symbol-Application) ([`start`](domain/app.md#symbol-Application.start)), [`ApplicationImpl`](domain/app.md#symbol-ApplicationImpl), [`Fruit`](domain/models.md#symbol-Fruit), [`RangeError`](domain/numbers.md#symbol-RangeError), and [`double`](domain/numbers.md#symbol-double) from `domain`.
151
133
 
152
- #### [`SystemConsole`](dependencies/august/0.19.0/io/contracts.md#symbol-SystemConsole)
153
-
154
- Class from `august.io`.
155
-
156
- Used as a type or provider.
157
-
158
- #### [`Counter`](counters.md#symbol-Counter)
159
-
160
- Interface from `counters`.
161
-
162
- - [`Counter.increment`](counters.md#symbol-Counter.increment) (no caller inputs) → `void`; changes `self`.
163
- - [`Counter.value`](counters.md#symbol-Counter.value) (no caller inputs) → `int`.
164
-
165
- #### [`Counters`](counters.md#symbol-Counters)
166
-
167
- Composition from `counters`.
168
-
169
- Used as a type or provider.
170
-
171
- #### [`Application`](domain/app.md#symbol-Application)
172
-
173
- Interface from `domain`.
174
-
175
- - [`Application.start`](domain/app.md#symbol-Application.start) (no caller inputs) → `void`; uses [`Console.write`](dependencies/august/0.19.0/io/contracts.md#symbol-Console.write).
176
-
177
- #### [`ApplicationImpl`](domain/app.md#symbol-ApplicationImpl)
178
-
179
- Class from `domain`.
180
-
181
- Used as a type or provider.
182
-
183
- #### [`Fruit`](domain/models.md#symbol-Fruit)
184
-
185
- Record from `domain`.
186
-
187
- - Construct with `code`: `int`, `name`: `string` → [`Fruit`](domain/models.md#symbol-Fruit).
188
-
189
- #### [`RangeError`](domain/numbers.md#symbol-RangeError)
190
-
191
- Class from `domain`.
192
-
193
- Used as a type or provider.
194
-
195
- #### [`double`](domain/numbers.md#symbol-double)
196
-
197
- Function from `domain`.
198
-
199
- - [`double`](domain/numbers.md#symbol-double) (`amount`: `int`) → `int`; can fail with `RangeError`.
200
-
201
- ### Built-in operations used by this file
202
-
203
- - `Map<int, string>.get` (`key`: `int`) → `optional string`: Read a value by key; an absent key returns null. contains distinguishes an absent key from a stored null.
204
- - `Set<Fruit>.length` (no inputs) → `int`: Read the number of elements.
205
- - `print` (`value`: `any`) → `void`: Composition and test output. Other callables receive Console and declare uses console.write.
206
-
207
- [Full built-in reference](https://greenpandastudios.github.io/augscript/language-constructs).
208
-
209
- ### Shared language rules
210
-
211
- See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
134
+ Built-in operations follow the [language reference](https://greenpandastudios.github.io/augscript/language-constructs).
212
135
 
213
136
  ::::
214
137
 
@@ -12,7 +12,7 @@ outline: [2, 3]
12
12
 
13
13
  Measure a deterministic arithmetic workload with aug bench.
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/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:
26
26
 
27
27
  ```sh
28
- aug check examples/benchmark
29
- aug spec examples/benchmark
30
- aug run examples/benchmark
28
+ cd benchmark
29
+ aug check .
30
+ aug spec .
31
+ aug run .
31
32
  ```
32
33
 
33
34
  [Browse all examples](../index.md)
@@ -28,6 +28,7 @@ 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
  // A deterministic native workload: arithmetic and 20,000 hash entries.
32
33
  own Map<int,int> values = {}
33
34
  own Set<int> unique = {}
@@ -45,6 +46,7 @@ print(value=values.length() == unique.length())
45
46
  ```
46
47
 
47
48
  ```aug [Braces]
49
+ // aug-spec: "main.aug.md" explains this file. Read it before changes; refresh with aug spec.
48
50
  // A deterministic native workload: arithmetic and 20,000 hash entries.
49
51
  own Map<int,int> values = {}
50
52
  own Set<int> unique = {}
@@ -72,45 +74,15 @@ print(value=values.length() == unique.length())
72
74
 
73
75
  ## Compiled specification {#specification}
74
76
 
75
- August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
77
+ ### Startup
76
78
 
77
- ### In this file
79
+ It sets `values` of type `Map<int,int>` to a context-typed empty collection with no items. `values` of type `Map<int,int>` owns this value. It sets `unique` of type `Set<int>` to a context-typed empty collection with no items. `unique` of type `Set<int>` owns this value.
78
80
 
79
- - Run 8 other startup steps in source order.
81
+ It sets `index` to `0`. While `index` is less than `20000`, it stores `index` times `3` in `values` under `index`; then it adds `index` to `unique`; then it increases `index` by `1`. After the loop, it sets `checksum` to `0`. For each `key` and `value` in a snapshot of `values`, if whether `unique` contains `key` returns true, it increases `checksum` by `value`.
80
82
 
81
- ### Startup, in source order
83
+ After the loop, it prints `checksum`. It prints the number of elements in `values` equals the number of elements in `unique`.
82
84
 
83
- - Set `values` of type `Map<int,int>` to a context-typed empty collection with no items.
84
- - This variable owns the value.
85
- - Set `unique` of type `Set<int>` to a context-typed empty collection with no items.
86
- - This variable owns the value.
87
- - Set `index` of type `int` to `0`.
88
- - While `index` is less than `20000`, repeat:
89
- - Call `set` on `values` with `key` = `index`; `value` = (`index` times `3`).
90
- - Call `add` on `unique` with `value` = `index`.
91
- - Set `index` to `index` plus `1`.
92
- - Check the condition again before the next iteration.
93
- - Set `checksum` of type `int` to `0`.
94
- - For each `key` and `value` in a snapshot of `values`, in iteration order:
95
- - If call `contains` on `unique` with `value` = `key` is true:
96
- - Set `checksum` to `checksum` plus `value`.
97
- - Call `print` with `value` = `checksum`.
98
- - Call `print` with `value` = (call `length` on `values` equals call `length` on `unique`).
99
-
100
- ### Built-in operations used by this file
101
-
102
- - `Map<int, int>.length` (no inputs) → `int`: Read the number of elements.
103
- - `Map<int, int>.set` (`key`: `int`, `value`: `int`) → `void`: Insert or replace an entry with exclusive mutable access. Changes the receiver.
104
- - `Set<int>.add` (`value`: `int`) → `void`: Insert a unique element with exclusive mutable access. Changes the receiver.
105
- - `Set<int>.contains` (`value`: `int`) → `bool`: Test structural or identity equality with a stored element.
106
- - `Set<int>.length` (no inputs) → `int`: Read the number of elements.
107
- - `print` (`value`: `any`) → `void`: Composition and test output. Other callables receive Console and declare uses console.write.
108
-
109
- [Full built-in reference](https://greenpandastudios.github.io/augscript/language-constructs).
110
-
111
- ### Shared language rules
112
-
113
- See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
85
+ Built-in operations follow the [language reference](https://greenpandastudios.github.io/augscript/language-constructs).
114
86
 
115
87
  ::::
116
88
 
@@ -12,7 +12,7 @@ outline: [2, 3]
12
12
 
13
13
  Read arguments, inspect collections, and return a process exit status.
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/cli-args.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 examples/cli-args
28
- aug spec examples/cli-args
29
- aug run examples/cli-args
27
+ cd cli-args
28
+ aug check .
29
+ aug spec .
30
+ aug run .
30
31
  ```
31
32
 
32
33
  [Browse all examples](../index.md)
@@ -28,6 +28,7 @@ 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
  try:
32
33
  args = arguments()
33
34
  print(value=args.length())
@@ -42,6 +43,7 @@ catch IndexError error:
42
43
  ```
43
44
 
44
45
  ```aug [Braces]
46
+ // aug-spec: "main.aug.md" explains this file. Read it before changes; refresh with aug spec.
45
47
  try {
46
48
  args = arguments()
47
49
  print(value=args.length())
@@ -67,40 +69,13 @@ catch IndexError error {
67
69
 
68
70
  ## Compiled specification {#specification}
69
71
 
70
- August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
72
+ ### Startup
71
73
 
72
- ### In this file
74
+ It sets `args` to `arguments`. It prints the number of elements in `args`. If the number of elements in `args` is positive, it prints the item at index `0` in `args`. It sets `numbers` to a list of `int` containing `1`, `2`.
73
75
 
74
- - Run startup operations with checked error recovery.
76
+ With temporary permission to change `numbers`, it appends `3` to `numbers`. It prints the item at index `2` in `numbers`. If this work raises `IndexError`, it prints `"unexpected index failure"`.
75
77
 
76
- ### Startup, in source order
77
-
78
- - Try these operations:
79
- - Set `args` to call `arguments`.
80
- - Call `print` with `value` = call `length` on `args`.
81
- - If call `length` on `args` is greater than `0`:
82
- - Call `print` with `value` = call `get` on `args` with `index` = `0`.
83
- - Set `numbers` to a list of `int` containing `1`, `2`.
84
- - Grant exclusive mutable access to `numbers` for this block, then end the borrow:
85
- - Call `append` on `numbers` with `value` = `3`.
86
- - Call `print` with `value` = call `get` on `numbers` with `index` = `2`.
87
- - If they fail with `IndexError`, name the failure `error` and recover:
88
- - Call `print` with `value` = `"unexpected index failure"`.
89
-
90
- ### Built-in operations used by this file
91
-
92
- - `List<int>.append` (`value`: `int`) → `void`: Append an element with exclusive mutable access. Read-only and owned aliases cannot be stored here. Changes the receiver.
93
- - `List<int>.get` (`index`: `int`) → `int`: Read a zero-based position. An invalid index raises checked IndexError. Reference results grant reading. Can fail with `IndexError`.
94
- - `List<string>.get` (`index`: `int`) → `string`: Read a zero-based position. An invalid index raises checked IndexError. Reference results grant reading. Can fail with `IndexError`.
95
- - `List<string>.length` (no inputs) → `int`: Read the number of elements.
96
- - `arguments` (no inputs) → `List<string>`: Composition arguments. Other callables receive the Arguments capability.
97
- - `print` (`value`: `any`) → `void`: Composition and test output. Other callables receive Console and declare uses console.write.
98
-
99
- [Full built-in reference](https://greenpandastudios.github.io/augscript/language-constructs).
100
-
101
- ### Shared language rules
102
-
103
- See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
78
+ Built-in operations follow the [language reference](https://greenpandastudios.github.io/augscript/language-constructs).
104
79
 
105
80
  ::::
106
81
 
@@ -12,7 +12,7 @@ outline: [2, 3]
12
12
 
13
13
  Create typed collections and update them through checked mutable access.
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/collections.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 examples/collections
28
- aug spec examples/collections
29
- aug run examples/collections
27
+ cd collections
28
+ aug check .
29
+ aug spec .
30
+ aug run .
30
31
  ```
31
32
 
32
33
  [Browse all examples](../index.md)