@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
@@ -1,104 +1,22 @@
1
1
  <!-- Generated by aug spec. Edit the August source, then regenerate. -->
2
2
 
3
- # `userinfo.aug` specification
3
+ # `userinfo.aug`
4
4
 
5
- August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
6
-
7
- ## In this file
8
-
9
- - [`userinfo`](userinfo.aug.md#symbol-userinfo) handles `GET` `/provider/userinfo` returning `HttpResponse<Json>`.
5
+ 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.
10
6
 
11
7
  <a id="symbol-userinfo"></a>
8
+ ## `userinfo` · [source](userinfo.aug#L8)
12
9
 
13
- ## `userinfo`
14
-
15
- [source](userinfo.aug#L7)
16
-
17
- **Inputs**
18
-
19
- - `authorization` (`optional string`) — read from the HTTP header; absent value becomes null.
20
- - `clock` ([`Clock`](../.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-Clock)) — injected; callers omit it.
21
- - `access` ([`ExpiringStore<AccessGrant>`](../.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore)) — injected; callers omit it.
22
-
23
- Returns: `HttpResponse<Json>`.
24
-
25
- Capabilities: [`clock.now`](../.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-Clock.now), [`access.get`](../.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore.get).
26
-
27
- Can fail with `TimeError`, `HttpError`. Callers must catch or propagate these errors.
28
-
29
- HTTP route: `GET` `/provider/userinfo`. Use status 200 when the handler returns a body; a returned HttpResponse can set its own status. An unhandled request failure returns status 500 and cancels its request tasks.
30
-
31
- **What it does**
32
-
33
- - Select the matching case for `authorization`:
34
- - A null value, including omitted optional input:
35
- - Continue without another operation.
36
- - A present, non-null value, named `header`:
37
- - Set `parts` to call `split` on `header` with `separator` = `" "`.
38
- - If call `length` on `parts` equals `2`:
39
- - Try these operations:
40
- - If call `get` on `parts` with `index` = `0` equals `"Bearer"`:
41
- - Set `token` to call `get` on `parts` with `index` = `1`.
42
- - If call `isToken` on `token` with `min` = `43`; `max` = `43` is true:
43
- - Select the matching case for call [`ExpiringStore.get`](../.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore.get) on `access` with `key` = `token`; `now` = call [`Clock.now`](../.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-Clock.now) on `clock`:
44
- - A null value, including omitted optional input:
45
- - Continue without another operation.
46
- - A present, non-null value, named `grant`:
47
- - Return call `HttpResponse` with `body` = call `Json` with `value` = call [`UserInfo`](contracts.aug.md#symbol-UserInfo) with `sub` = `subject` of `grant`; `name` = `name` of `grant`; `headers` = call [`securityHeaders`](../common/headers.aug.md#symbol-securityHeaders).
48
- - If they fail with `IndexError`, name the failure `error` and recover:
49
- - Continue without another operation.
50
- - Set `headers` to call `with` on call [`securityHeaders`](../common/headers.aug.md#symbol-securityHeaders) with `name` = `"www-authenticate"`; `value` = `"Bearer error=\"invalid_token\""`.
51
- - Return call `HttpResponse` with `body` = call `Json` with `value` = a map with `"error"` mapped to `"invalid_token"`; `status` = `401`; `headers` = `headers`.
52
-
53
- **Author documentation**
54
-
55
- The opaque access token is valid only at this provider. Missing, expired and malformed credentials receive the same response.
56
-
57
- ## Dependencies used by this file
58
-
59
- Only referenced types and operations appear here. Each name links to its complete specification.
60
-
61
- ### [`ExpiringStore`](../.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore)
62
-
63
- Capability interface from `august.memory`.
64
-
65
- - [`ExpiringStore.get`](../.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore.get) (`key`: `string`, `now`: `int`) → `optional T`.
66
-
67
- ### [`Clock`](../.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-Clock)
68
-
69
- Capability interface from `august.time`.
70
-
71
- - [`Clock.now`](../.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-Clock.now) (no caller inputs) → `int`; can fail with `TimeError`.
72
-
73
- ### [`securityHeaders`](../common/headers.aug.md#symbol-securityHeaders)
74
-
75
- Function from `common`.
76
-
77
- - [`securityHeaders`](../common/headers.aug.md#symbol-securityHeaders) (no caller inputs) → `Headers`; can fail with `HttpError`.
78
-
79
- ### [`AccessGrant`](contracts.aug.md#symbol-AccessGrant)
80
-
81
- Record from `contracts`.
82
-
83
- - Read `name` (`string`).
84
- - Read `subject` (`string`).
85
-
86
- ### [`UserInfo`](contracts.aug.md#symbol-UserInfo)
87
-
88
- Record from `contracts`.
10
+ `userinfo` handles `GET /provider/userinfo`. The opaque access token is valid only at this provider. Missing, expired and malformed credentials receive the same response.
89
11
 
90
- - Construct with `sub`: `string`, `name`: `string` → [`UserInfo`](contracts.aug.md#symbol-UserInfo).
12
+ It takes `authorization` as `optional string` from the HTTP header. It gets `clock` ([`Clock`](../.aug-spec/packages/%40git/url_c092cd151499c4e1d8a1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.aug.md#symbol-Clock)) and `access` ([`ExpiringStore<AccessGrant>`](../.aug-spec/packages/%40git/url_0eb7c89453c87681ed15/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/store.aug.md#symbol-ExpiringStore)) from dependency injection. Omitted optional inputs are null. It can also raise `HttpError` and `TimeError`.
91
13
 
92
- ## Built-in operations used by this file
14
+ If `authorization` is null, it continues without an operation. If `authorization` is not null, using `header` for it sets `parts` to `header.split` with `separator` `" "`. If the number of elements in `parts` equals `2`, if the item at index `0` in `parts` equals `"Bearer"`, it sets `token` to the item at index `1` in `parts`. If `token` is a URL-safe ASCII token with `43` to `43` characters, if [`access.get`](../.aug-spec/packages/%40git/url_0eb7c89453c87681ed15/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/store.aug.md#symbol-ExpiringStore.get) with `key` from `token` and `now` from [`clock.now`](../.aug-spec/packages/%40git/url_c092cd151499c4e1d8a1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.aug.md#symbol-Clock.now) is null, it continues without an operation.
93
15
 
94
- - `Headers.with` (`name`: `string`, `value`: `string`) → `Headers`: Return new headers with one additional validated field. Header names ignore case; duplicate values remain separate. Can fail with `HttpError`.
95
- - `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`.
96
- - `List<string>.length` (no inputs) → `int`: Read the number of elements.
97
- - `string.isToken` (`min`: `int`, `max`: `int`) → `bool`: Require an ASCII RFC 3986 unreserved token with a bounded length.
98
- - `string.split` (`separator`: `string`) → `List<string>`: Split at an exact separator, preserving empty parts.
16
+ If [`access.get`](../.aug-spec/packages/%40git/url_0eb7c89453c87681ed15/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/store.aug.md#symbol-ExpiringStore.get) with `key` from `token` and `now` from [`clock.now`](../.aug-spec/packages/%40git/url_c092cd151499c4e1d8a1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.aug.md#symbol-Clock.now) is not null, using `grant` for it returns HTTP 200 with a `Json` with `value` from an [`UserInfo`](contracts.aug.md#symbol-UserInfo) with `sub` from `grant.subject` and `grant.name` and [`securityHeaders`](../common/headers.aug.md#symbol-securityHeaders) headers. If this work raises `IndexError`, it continues without an operation. It sets `headers` to [`securityHeaders`](../common/headers.aug.md#symbol-securityHeaders) with the header `"www-authenticate"` set to `"Bearer error=\"invalid_token\""`. It returns HTTP 401 with a `Json` with `value` from a map with `"error"` mapped to `"invalid_token"` and `headers` headers.
99
17
 
100
- [Full built-in reference](https://greenpandastudios.github.io/augscript/language-constructs).
18
+ ## Dependencies
101
19
 
102
- ## Shared language rules
20
+ It uses [`ExpiringStore`](../.aug-spec/packages/%40git/url_0eb7c89453c87681ed15/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/store.aug.md#symbol-ExpiringStore) ([`get`](../.aug-spec/packages/%40git/url_0eb7c89453c87681ed15/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/store.aug.md#symbol-ExpiringStore.get)) from `memory`. It uses [`Clock`](../.aug-spec/packages/%40git/url_c092cd151499c4e1d8a1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.aug.md#symbol-Clock) ([`now`](../.aug-spec/packages/%40git/url_c092cd151499c4e1d8a1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.aug.md#symbol-Clock.now)) from `time`. It uses [`securityHeaders`](../common/headers.aug.md#symbol-securityHeaders) from `common`. It uses [`AccessGrant`](contracts.aug.md#symbol-AccessGrant) (`name` and `subject`) and [`UserInfo`](contracts.aug.md#symbol-UserInfo) from `contracts`.
103
21
 
104
- See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
22
+ Built-in operations follow the [language reference](https://greenpandastudios.github.io/augscript/language-constructs).
@@ -1,6 +1,7 @@
1
+ // aug-spec: "views.aug.md" explains this file. Read it before changes; refresh with aug spec.
1
2
  import Page from common
2
3
  /** A server form with a checked HTTP action. The browser submits to the provider endpoint. */
3
- ProviderLogin(string requestId, string csrf, string message, HttpAction submit) returns Html:
4
+ ProviderLogin(string requestId, string csrf, string message, HttpAction submit) :
4
5
  return <Page title="Sign in with the August provider">
5
6
  <p>{message}</p>
6
7
  <p style="background:#f3f5f9;padding:12px;border-radius:8px">Demo account: <strong>ada</strong> · password <strong>august-demo</strong></p>
@@ -14,5 +15,5 @@ ProviderLogin(string requestId, string csrf, string message, HttpAction submit)
14
15
  <p style="font-size:14px;color:#677189">The provider and app run in the same executable. Authorization codes still travel through the OpenID Connect protocol.</p>
15
16
  </Page>
16
17
 
17
- ProviderFailure(string message) returns Html:
18
+ ProviderFailure(string message) :
18
19
  return <Page title="Sign-in could not continue"><p>{message}</p><a href="/login/start">Start a new sign-in</a></Page>
@@ -1,63 +1,19 @@
1
1
  <!-- Generated by aug spec. Edit the August source, then regenerate. -->
2
2
 
3
- # `views.aug` specification
4
-
5
- August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
6
-
7
- ## In this file
8
-
9
- - [`ProviderLogin`](views.aug.md#symbol-ProviderLogin) is a function returning `Html`.
10
- - [`ProviderFailure`](views.aug.md#symbol-ProviderFailure) is a function returning `Html`.
3
+ # `views.aug`
11
4
 
12
5
  <a id="symbol-ProviderLogin"></a>
6
+ ## `ProviderLogin` · [source](views.aug#L4)
13
7
 
14
- ## `ProviderLogin`
15
-
16
- [source](views.aug#L3)
17
-
18
- **Inputs**
19
-
20
- - `requestId` (`string`) — required labeled input.
21
- - `csrf` (`string`) — required labeled input.
22
- - `message` (`string`) — required labeled input.
23
- - `submit` (`HttpAction`) — required labeled input.
8
+ A server form with a checked HTTP action. The browser submits to the provider endpoint. It takes `requestId`, `csrf`, and `message` as strings and `submit` as `HttpAction`.
24
9
 
25
- Returns: `Html`.
26
-
27
- **What it does**
28
-
29
- - Return the server component [`Page`](../common/views.aug.md#symbol-Page) with `title` = `"Sign in with the August provider"` containing the HTML element `p` containing `message` (rendered on the server with embedded text escaped), the HTML element `p` with `style` = `"background:#f3f5f9;padding:12px;border-radius:8px"` containing `Demo account: `, the HTML element `strong` containing `ada` (rendered on the server with embedded text escaped), ` · password `, the HTML element `strong` containing `august-demo` (rendered on the server with embedded text escaped) (rendered on the server with embedded text escaped), the HTML element `form` with `method` = `"post"`, `action` = `"/provider/login"`, `onSubmit` = `submit` containing the HTML element `input` with `type` = `"hidden"`, `name` = `"request_id"`, `value` = `requestId` (rendered on the server with embedded text escaped), the HTML element `input` with `type` = `"hidden"`, `name` = `"csrf"`, `value` = `csrf` (rendered on the server with embedded text escaped), the HTML element `p` containing the HTML element `label` with `for` = `"username"` containing `Username` (rendered on the server with embedded text escaped), the HTML element `br` (rendered on the server with embedded text escaped), the HTML element `input` with `id` = `"username"`, `name` = `"username"`, `autocomplete` = `"username"`, `value` = `"ada"`, `maxlength` = `"64"`, `required` = `true`, `style` = `"padding:10px;width:90%"` (rendered on the server with embedded text escaped) (rendered on the server with embedded text escaped), the HTML element `p` containing the HTML element `label` with `for` = `"password"` containing `Password` (rendered on the server with embedded text escaped), the HTML element `br` (rendered on the server with embedded text escaped), the HTML element `input` with `id` = `"password"`, `type` = `"password"`, `name` = `"password"`, `autocomplete` = `"current-password"`, `maxlength` = `"256"`, `required` = `true`, `style` = `"padding:10px;width:90%"` (rendered on the server with embedded text escaped) (rendered on the server with embedded text escaped), the HTML element `button` with `type` = `"submit"`, `style` = `"padding:12px 20px;border:0;border-radius:9px;background:#4852d7;color:white;font:inherit"` containing `Sign in and return to the app` (rendered on the server with embedded text escaped) (rendered on the server with embedded text escaped), the HTML element `p` with `style` = `"font-size:14px;color:#677189"` containing `The provider and app run in the same executable. Authorization codes still travel through the OpenID Connect protocol.` (rendered on the server with embedded text escaped) (rendered on the server with embedded text escaped).
30
-
31
- **Author documentation**
32
-
33
- A server form with a checked HTTP action. The browser submits to the provider endpoint.
10
+ It returns the server component [`Page`](../common/views.aug.md#symbol-Page) with `title` = `"Sign in with the August provider"` containing a paragraph containing `message` with escaped text, a paragraph with `style` = `"background:#f3f5f9;padding:12px;border-radius:8px"` containing `Demo account: `, the HTML element `strong` containing `ada` with escaped text, ` · password `, the HTML element `strong` containing `august-demo` with escaped text with escaped text, the HTML element `form` with `method` = `"post"`, `action` = `"/provider/login"`, `onSubmit` = `submit` containing the HTML element `input` with `type` = `"hidden"`, `name` = `"request_id"`, `value` = `requestId` with escaped text, the HTML element `input` with `type` = `"hidden"`, `name` = `"csrf"`, `value` = `csrf` with escaped text, a paragraph containing the HTML element `label` with `for` = `"username"` containing `Username` with escaped text, the HTML element `br` with escaped text, the HTML element `input` with `id` = `"username"`, `name` = `"username"`, `autocomplete` = `"username"`, `value` = `"ada"`, `maxlength` = `"64"`, `required` = `true`, `style` = `"padding:10px;width:90%"` with escaped text with escaped text, a paragraph containing the HTML element `label` with `for` = `"password"` containing `Password` with escaped text, the HTML element `br` with escaped text, the HTML element `input` with `id` = `"password"`, `type` = `"password"`, `name` = `"password"`, `autocomplete` = `"current-password"`, `maxlength` = `"256"`, `required` = `true`, `style` = `"padding:10px;width:90%"` with escaped text with escaped text, a button with `type` = `"submit"`, `style` = `"padding:12px 20px;border:0;border-radius:9px;background:#4852d7;color:white;font:inherit"` containing `Sign in and return to the app` with escaped text with escaped text, a paragraph with `style` = `"font-size:14px;color:#677189"` containing `The provider and app run in the same executable. Authorization codes still travel through the OpenID Connect protocol.` with escaped text with escaped text.
34
11
 
35
12
  <a id="symbol-ProviderFailure"></a>
13
+ ## `ProviderFailure` · [source](views.aug#L18)
36
14
 
37
- ## `ProviderFailure`
38
-
39
- [source](views.aug#L17)
40
-
41
- **Inputs**
42
-
43
- - `message` (`string`) — required labeled input.
44
-
45
- Returns: `Html`.
46
-
47
- **What it does**
48
-
49
- - Return the server component [`Page`](../common/views.aug.md#symbol-Page) with `title` = `"Sign-in could not continue"` containing the HTML element `p` containing `message` (rendered on the server with embedded text escaped), the HTML element `a` with `href` = `"/login/start"` containing `Start a new sign-in` (rendered on the server with embedded text escaped) (rendered on the server with embedded text escaped).
50
-
51
- ## Dependencies used by this file
52
-
53
- Only referenced types and operations appear here. Each name links to its complete specification.
54
-
55
- ### [`Page`](../common/views.aug.md#symbol-Page)
56
-
57
- Function from `common`.
58
-
59
- - [`Page`](../common/views.aug.md#symbol-Page) (`title`: `string`, `children`: `List<Html>`) → `Html`.
15
+ It takes `message` as a string. It returns the server component [`Page`](../common/views.aug.md#symbol-Page) with `title` = `"Sign-in could not continue"` containing a paragraph containing `message` with escaped text, a link with `href` = `"/login/start"` containing `Start a new sign-in` with escaped text with escaped text.
60
16
 
61
- ## Shared language rules
17
+ ## Dependencies
62
18
 
63
- See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
19
+ It uses [`Page`](../common/views.aug.md#symbol-Page) from `common`.
@@ -4,5 +4,5 @@
4
4
  "counter.aug.md",
5
5
  "main.aug.md"
6
6
  ],
7
- "digest": "963a9ed380d8c2dcd5cb2f8545a9ace3770b304d6bb172d08a25283afc8b72a7"
7
+ "digest": "3ccf0836702f9d499e94848e741d62d26cd91dcd1fe1e6fd0cc7fbdc339a7579"
8
8
  }
@@ -1,10 +1,11 @@
1
+ // aug-spec: "counter.aug.md" explains this file. Read it before changes; refresh with aug spec.
1
2
  Counter(mutable int value) implements ICounter {
2
- increment() changes self {
3
+ increment() {
3
4
  borrow self {
4
5
  value = value + 1
5
6
  }
6
7
  }
7
- read() returns int {
8
+ read() {
8
9
  return value
9
10
  }
10
11
  }
@@ -1,85 +1,31 @@
1
1
  <!-- Generated by aug spec. Edit the August source, then regenerate. -->
2
2
 
3
- # `counter.aug` specification
4
-
5
- August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
6
-
7
- ## In this file
8
-
9
- - [`Counter`](counter.aug.md#symbol-Counter) is a class implementing `ICounter`.
10
- - [`ICounter`](counter.aug.md#symbol-ICounter) is an interface.
3
+ # `counter.aug`
11
4
 
12
5
  <a id="symbol-Counter"></a>
6
+ ## `Counter` · class · [source](counter.aug#L2)
13
7
 
14
- ## `Counter`
15
-
16
- [source](counter.aug#L1)
17
-
18
- Behavioral class.
19
-
20
- Satisfies [`ICounter`](counter.aug.md#symbol-ICounter).
21
-
22
- **Inputs**
23
-
24
- - `value` (`int`) — required labeled input — stored as `value` and mutable.
8
+ It implements [`ICounter`](counter.aug.md#symbol-ICounter). It takes `value` as an integer, kept mutable.
25
9
 
26
10
  <a id="symbol-Counter.increment"></a>
11
+ ### `Counter.increment` · [source](counter.aug#L3)
27
12
 
28
- ### `Counter.increment`
29
-
30
- [source](counter.aug#L2)
31
-
32
- Returns: no value.
33
-
34
- May change: `self`.
35
-
36
- **What it does**
37
-
38
- - Grant exclusive mutable access to `self` for this block, then end the borrow:
39
- - Set `value` to `value` plus `1`.
13
+ It may change `self`. With temporary permission to change `self`, it increases `value` by `1`.
40
14
 
41
15
  <a id="symbol-Counter.read"></a>
16
+ ### `Counter.read` · [source](counter.aug#L8)
42
17
 
43
- ### `Counter.read`
44
-
45
- [source](counter.aug#L7)
46
-
47
- Returns: `int`.
48
-
49
- **What it does**
50
-
51
- - Return `value`.
18
+ It returns `value`.
52
19
 
53
20
  <a id="symbol-ICounter"></a>
54
-
55
- ## `ICounter`
56
-
57
- [source](counter.aug#L11)
58
-
59
- Interface.
21
+ ## `ICounter` · interface · [source](counter.aug#L12)
60
22
 
61
23
  <a id="symbol-ICounter.increment"></a>
24
+ ### `ICounter.increment` · [source](counter.aug#L13)
62
25
 
63
- ### `ICounter.increment`
64
-
65
- [source](counter.aug#L12)
66
-
67
- Returns: no value.
68
-
69
- May change: `self`.
70
-
71
- Interface contract. A selected implementation supplies the behavior.
26
+ It may change `self`.
72
27
 
73
28
  <a id="symbol-ICounter.read"></a>
29
+ ### `ICounter.read` · [source](counter.aug#L14)
74
30
 
75
- ### `ICounter.read`
76
-
77
- [source](counter.aug#L13)
78
-
79
- Returns: `int`.
80
-
81
- Interface contract. A selected implementation supplies the behavior.
82
-
83
- ## Shared language rules
84
-
85
- See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
31
+ It returns `int`.
@@ -1,3 +1,4 @@
1
+ // aug-spec: "main.aug.md" explains this file. Read it before changes; refresh with aug spec.
1
2
  import Counter from counter
2
3
  own Counter counter = Counter(value=1)
3
4
  counter.increment()
@@ -1,38 +1,13 @@
1
1
  <!-- Generated by aug spec. Edit the August source, then regenerate. -->
2
2
 
3
- # `main.aug` specification
3
+ # `main.aug`
4
4
 
5
- August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
5
+ ## Startup
6
6
 
7
- ## In this file
7
+ It sets `counter` of type [`Counter`](counter.aug.md#symbol-Counter) to a [`Counter`](counter.aug.md#symbol-Counter) with `value` `1`. `counter` of type [`Counter`](counter.aug.md#symbol-Counter) owns this value. It calls [`counter.increment`](counter.aug.md#symbol-Counter.increment). It prints [`counter.read`](counter.aug.md#symbol-Counter.read).
8
8
 
9
- - Run 3 other startup steps in source order.
9
+ ## Dependencies
10
10
 
11
- ## Startup, in source order
11
+ It uses [`Counter`](counter.aug.md#symbol-Counter) ([`increment`](counter.aug.md#symbol-Counter.increment) and [`read`](counter.aug.md#symbol-Counter.read)) from `counter`.
12
12
 
13
- - Set `counter` of type [`Counter`](counter.aug.md#symbol-Counter) to call [`Counter`](counter.aug.md#symbol-Counter) with `value` = `1`.
14
- - This variable owns the value.
15
- - Call [`Counter.increment`](counter.aug.md#symbol-Counter.increment) on `counter`.
16
- - Call `print` with `value` = call [`Counter.read`](counter.aug.md#symbol-Counter.read) on `counter`.
17
-
18
- ## Dependencies used by this file
19
-
20
- Only referenced types and operations appear here. Each name links to its complete specification.
21
-
22
- ### [`Counter`](counter.aug.md#symbol-Counter)
23
-
24
- Class from `counter`.
25
-
26
- - Construct with `value`: `int` → [`Counter`](counter.aug.md#symbol-Counter).
27
- - [`Counter.increment`](counter.aug.md#symbol-Counter.increment) (no caller inputs) → `void`; changes `self`.
28
- - [`Counter.read`](counter.aug.md#symbol-Counter.read) (no caller inputs) → `int`.
29
-
30
- ## Built-in operations used by this file
31
-
32
- - `print` (`value`: `any`) → `void`: Composition and test output. Other callables receive Console and declare uses console.write.
33
-
34
- [Full built-in reference](https://greenpandastudios.github.io/augscript/language-constructs).
35
-
36
- ## Shared language rules
37
-
38
- See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
13
+ Built-in operations follow the [language reference](https://greenpandastudios.github.io/augscript/language-constructs).
@@ -0,0 +1,37 @@
1
+ // Generated by aug spec. This is a copy of the installed dependency source.
2
+ // aug-spec: "contracts.aug.md" explains this file. Read it before changes; refresh with aug spec.
3
+ /** Permission to write to a console, provided by an explicitly selected adapter. */
4
+ capability Console:
5
+ /** Write one line of text. @param value Text to display. */
6
+ write<T>(T value) uses Console.write
7
+
8
+ /** The native standard-output adapter. Construction performs no output. */
9
+ SystemConsole() implements Console:
10
+ write<T>(T value):
11
+ print(value=value)
12
+
13
+ /** Read UTF-8 text through an explicitly selected filesystem adapter. */
14
+ capability FileReader:
15
+ /** Read text. @param path File path. @throws FileError The file could not be read. */
16
+ read(string path) returns string uses FileReader.read unless FileError
17
+
18
+ /** Write UTF-8 text through an explicitly selected filesystem adapter. */
19
+ capability FileWriter:
20
+ /** Write text. @param path File path. @param content Text. @throws FileError Writing failed. */
21
+ write(string path, string content) uses FileWriter.write unless FileError
22
+
23
+ /** Native files. Operations are explicit; construction opens no files. */
24
+ LocalFiles() implements FileReader, FileWriter:
25
+ read(string path) :
26
+ return read_file(path=path)
27
+ write(string path, string content) :
28
+ write_file(path=path, content=content)
29
+
30
+ /** Read command-line input through an explicit dependency. */
31
+ capability Arguments:
32
+ read() returns List<string> uses Arguments.read
33
+
34
+ /** Native command-line arguments. */
35
+ ProcessArguments() implements Arguments:
36
+ read() :
37
+ return arguments()
@@ -0,0 +1,82 @@
1
+ <!-- Generated by aug spec. Edit the August source, then regenerate. -->
2
+
3
+ # `contracts.aug`
4
+
5
+ <a id="symbol-Console"></a>
6
+ ## `Console` · capability interface · [source](contracts.aug#L4)
7
+
8
+ Permission to write to a console, provided by an explicitly selected adapter.
9
+
10
+ <a id="symbol-Console.write"></a>
11
+ ### `Console.write` · [source](contracts.aug#L6)
12
+
13
+ Write one line of text. The type parameters are `T`. It takes `value` as `T` (Text to display). It can call [`Console.write`](contracts.aug.md#symbol-Console.write).
14
+
15
+ <a id="symbol-SystemConsole"></a>
16
+ ## `SystemConsole` · class · [source](contracts.aug#L9)
17
+
18
+ The native standard-output adapter. Construction performs no output. It implements [`Console`](contracts.aug.md#symbol-Console).
19
+
20
+ <a id="symbol-SystemConsole.write"></a>
21
+ ### `SystemConsole.write` · [source](contracts.aug#L10)
22
+
23
+ Write one line of text. The type parameters are `T`. It takes `value` as `T` (Text to display). It prints `value`.
24
+
25
+ <a id="symbol-FileReader"></a>
26
+ ## `FileReader` · capability interface · [source](contracts.aug#L14)
27
+
28
+ Read UTF-8 text through an explicitly selected filesystem adapter.
29
+
30
+ <a id="symbol-FileReader.read"></a>
31
+ ### `FileReader.read` · [source](contracts.aug#L16)
32
+
33
+ Read text. It takes `path` as a string (File path).
34
+
35
+ It returns `string`. It can call [`FileReader.read`](contracts.aug.md#symbol-FileReader.read). Failures can raise `FileError` (The file could not be read).
36
+
37
+ <a id="symbol-FileWriter"></a>
38
+ ## `FileWriter` · capability interface · [source](contracts.aug#L19)
39
+
40
+ Write UTF-8 text through an explicitly selected filesystem adapter.
41
+
42
+ <a id="symbol-FileWriter.write"></a>
43
+ ### `FileWriter.write` · [source](contracts.aug#L21)
44
+
45
+ Write text. It takes `path` as a string (File path) and `content` as a string (Text). It can call [`FileWriter.write`](contracts.aug.md#symbol-FileWriter.write). Failures can raise `FileError` (Writing failed).
46
+
47
+ <a id="symbol-LocalFiles"></a>
48
+ ## `LocalFiles` · class · [source](contracts.aug#L24)
49
+
50
+ Native files. Operations are explicit; construction opens no files. It implements [`FileReader`](contracts.aug.md#symbol-FileReader) and [`FileWriter`](contracts.aug.md#symbol-FileWriter).
51
+
52
+ <a id="symbol-LocalFiles.read"></a>
53
+ ### `LocalFiles.read` · [source](contracts.aug#L25)
54
+
55
+ Read text. It takes `path` as a string (File path). Failures can raise `FileError` (The file could not be read). It returns `read_file` with `path`.
56
+
57
+ <a id="symbol-LocalFiles.write"></a>
58
+ ### `LocalFiles.write` · [source](contracts.aug#L27)
59
+
60
+ Write text. It takes `path` as a string (File path) and `content` as a string (Text). Failures can raise `FileError` (Writing failed). It calls `write_file` with `path` and `content`.
61
+
62
+ <a id="symbol-Arguments"></a>
63
+ ## `Arguments` · capability interface · [source](contracts.aug#L31)
64
+
65
+ Read command-line input through an explicit dependency.
66
+
67
+ <a id="symbol-Arguments.read"></a>
68
+ ### `Arguments.read` · [source](contracts.aug#L32)
69
+
70
+ It returns `List<string>`. It can call [`Arguments.read`](contracts.aug.md#symbol-Arguments.read).
71
+
72
+ <a id="symbol-ProcessArguments"></a>
73
+ ## `ProcessArguments` · class · [source](contracts.aug#L35)
74
+
75
+ Native command-line arguments. It implements [`Arguments`](contracts.aug.md#symbol-Arguments).
76
+
77
+ <a id="symbol-ProcessArguments.read"></a>
78
+ ### `ProcessArguments.read` · [source](contracts.aug#L36)
79
+
80
+ It returns `arguments`.
81
+
82
+ Built-in operations follow the [language reference](https://greenpandastudios.github.io/augscript/language-constructs).
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "format": 1,
3
3
  "files": [
4
- ".aug-spec/august/0.19.0/io/contracts.aug",
5
- ".aug-spec/august/0.19.0/io/contracts.aug.md",
4
+ ".aug-spec/august/0.20.1/io/contracts.aug",
5
+ ".aug-spec/august/0.20.1/io/contracts.aug.md",
6
6
  "main.aug.md",
7
7
  "resource.aug.md"
8
8
  ],
9
- "digest": "0647bd67edecc9f86adc5dfccefbfac3fb6aa5d23e2e010c4bb4e657d37bb259"
9
+ "digest": "8d85313ff500704012ea9f56b795ef86ac5763ccef5097db9a020f44c3175148"
10
10
  }
@@ -1,3 +1,4 @@
1
+ // aug-spec: "main.aug.md" explains this file. Read it before changes; refresh with aug spec.
1
2
  import Console and SystemConsole from august.io
2
3
  implement Console with SystemConsole
3
4
  import Resource from resource
@@ -1,63 +1,19 @@
1
1
  <!-- Generated by aug spec. Edit the August source, then regenerate. -->
2
2
 
3
- # `main.aug` specification
3
+ # `main.aug`
4
4
 
5
- August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
5
+ ## Providers
6
6
 
7
- ## In this file
7
+ `Console` is provided by [`SystemConsole`](.aug-spec/august/0.20.1/io/contracts.aug.md#symbol-SystemConsole). The same instance is shared.
8
8
 
9
- - Register 1 dependency provider before startup.
10
- - Run 4 other startup steps in source order.
9
+ ## Startup
11
10
 
12
- ## Dependency providers
11
+ It gets `first` of type [`Resource`](resource.aug.md#symbol-Resource) from [`make`](resource.aug.md#symbol-make). `first` of type [`Resource`](resource.aug.md#symbol-Resource) owns this value. It calls [`consume`](resource.aug.md#symbol-consume) with `value` from `first` using injected `Console` for `console`. It gets `second` of type [`Resource`](resource.aug.md#symbol-Resource) from [`make`](resource.aug.md#symbol-make).
13
12
 
14
- Register these providers before startup. Their declaration order does not set initialization order; shared instances initialize in dependency order.
13
+ `second` of type [`Resource`](resource.aug.md#symbol-Resource) owns this value. It prints `"end of main"`.
15
14
 
16
- - Provide [`SystemConsole`](.aug-spec/august/0.19.0/io/contracts.aug.md#symbol-SystemConsole) when `Console` is requested. Reuse one instance.
15
+ ## Dependencies
17
16
 
18
- ## Startup, in source order
17
+ It uses [`SystemConsole`](.aug-spec/august/0.20.1/io/contracts.aug.md#symbol-SystemConsole) from `august.io`. It uses [`Resource`](resource.aug.md#symbol-Resource), [`consume`](resource.aug.md#symbol-consume), and [`make`](resource.aug.md#symbol-make) from `resource`.
19
18
 
20
- - Set `first` of type [`Resource`](resource.aug.md#symbol-Resource) to call [`make`](resource.aug.md#symbol-make).
21
- - This variable owns the value.
22
- - Call [`consume`](resource.aug.md#symbol-consume) with `value` = `first`; inject `console` from `Console`.
23
- - Set `second` of type [`Resource`](resource.aug.md#symbol-Resource) to call [`make`](resource.aug.md#symbol-make).
24
- - This variable owns the value.
25
- - Call `print` with `value` = `"end of main"`.
26
-
27
- ## Dependencies used by this file
28
-
29
- Only referenced types and operations appear here. Each name links to its complete specification.
30
-
31
- ### [`SystemConsole`](.aug-spec/august/0.19.0/io/contracts.aug.md#symbol-SystemConsole)
32
-
33
- Class from `august.io`.
34
-
35
- Used as a type or provider.
36
-
37
- ### [`Resource`](resource.aug.md#symbol-Resource)
38
-
39
- Class from `resource`.
40
-
41
- Used as a type or provider.
42
-
43
- ### [`consume`](resource.aug.md#symbol-consume)
44
-
45
- Function from `resource`.
46
-
47
- - [`consume`](resource.aug.md#symbol-consume) (`value`: [`Resource`](resource.aug.md#symbol-Resource)) → `void`; inject `console`: [`Console`](.aug-spec/august/0.19.0/io/contracts.aug.md#symbol-Console); uses [`Console.write`](.aug-spec/august/0.19.0/io/contracts.aug.md#symbol-Console.write).
48
-
49
- ### [`make`](resource.aug.md#symbol-make)
50
-
51
- Function from `resource`.
52
-
53
- - [`make`](resource.aug.md#symbol-make) (no caller inputs) → [`Resource`](resource.aug.md#symbol-Resource).
54
-
55
- ## Built-in operations used by this file
56
-
57
- - `print` (`value`: `any`) → `void`: Composition and test output. Other callables receive Console and declare uses console.write.
58
-
59
- [Full built-in reference](https://greenpandastudios.github.io/augscript/language-constructs).
60
-
61
- ## Shared language rules
62
-
63
- See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
19
+ Built-in operations follow the [language reference](https://greenpandastudios.github.io/augscript/language-constructs).
@@ -1,3 +1,4 @@
1
+ // aug-spec: "resource.aug.md" explains this file. Read it before changes; refresh with aug spec.
1
2
  import Console from august.io
2
3
  Resource() implements IResource {
3
4
  drop() {
@@ -11,6 +12,6 @@ make() returns own Resource {
11
12
  own Resource value = Resource()
12
13
  return value
13
14
  }
14
- consume(resolve Console console, own Resource value) uses Console.write {
15
+ consume(resolve Console console, own Resource value) {
15
16
  console.write(value="consumed")
16
17
  }