@greenpandastudios/aug-cli 0.19.0 → 0.20.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (459) hide show
  1. package/README.md +9 -6
  2. package/THIRD_PARTY_NOTICES.md +4 -0
  3. package/bin/aug.mjs +12 -2
  4. package/docs/about.md +27 -0
  5. package/docs/api/crypto.md +103 -69
  6. package/docs/api/io.md +35 -33
  7. package/docs/api/json.md +3 -3
  8. package/docs/api/memory.md +23 -19
  9. package/docs/api/time.md +10 -9
  10. package/docs/api/web.md +33 -38
  11. package/docs/compatibility.md +3 -3
  12. package/docs/contributing-benchmarks.md +38 -0
  13. package/docs/dev-containers.md +95 -0
  14. package/docs/diagnostics.md +15 -5
  15. package/docs/docker.md +174 -12
  16. package/docs/editor.md +35 -0
  17. package/docs/example-projects.json +206 -24
  18. package/docs/examples/approved-design/counters.md +34 -126
  19. package/docs/examples/approved-design/dependencies/august/0.20.1/io/contracts.md +178 -0
  20. package/docs/examples/approved-design/domain/app.md +13 -77
  21. package/docs/examples/approved-design/domain/export.md +5 -19
  22. package/docs/examples/approved-design/domain/models.md +4 -23
  23. package/docs/examples/approved-design/domain/numbers.md +24 -114
  24. package/docs/examples/approved-design/index.md +16 -7
  25. package/docs/examples/approved-design/main.md +19 -96
  26. package/docs/examples/benchmark/index.md +6 -5
  27. package/docs/examples/benchmark/main.md +7 -35
  28. package/docs/examples/cli-args/index.md +6 -5
  29. package/docs/examples/cli-args/main.md +6 -31
  30. package/docs/examples/collections/index.md +6 -5
  31. package/docs/examples/collections/main.md +7 -35
  32. package/docs/examples/collections-benchmark/index.md +6 -5
  33. package/docs/examples/collections-benchmark/main.md +7 -35
  34. package/docs/examples/cpu-benchmark/index.md +6 -5
  35. package/docs/examples/cpu-benchmark/main.md +5 -24
  36. package/docs/examples/developer-workflow/calculator.md +39 -186
  37. package/docs/examples/developer-workflow/dependencies/august/0.20.1/io/contracts.md +178 -0
  38. package/docs/examples/developer-workflow/index.md +16 -7
  39. package/docs/examples/developer-workflow/logging/console.md +10 -56
  40. package/docs/examples/developer-workflow/logging/export.md +4 -14
  41. package/docs/examples/developer-workflow/logging/logger.md +7 -43
  42. package/docs/examples/developer-workflow/main.md +17 -69
  43. package/docs/examples/drop/index.md +6 -5
  44. package/docs/examples/drop/main.md +7 -27
  45. package/docs/examples/drop/resource.md +7 -30
  46. package/docs/examples/errors/errors.md +7 -27
  47. package/docs/examples/errors/index.md +6 -5
  48. package/docs/examples/errors/main.md +7 -28
  49. package/docs/examples/ffi/index.md +6 -5
  50. package/docs/examples/ffi/main.md +6 -20
  51. package/docs/examples/ffi/native.md +8 -34
  52. package/docs/examples/generic-di/dependencies/august/0.20.1/io/contracts.md +178 -0
  53. package/docs/examples/generic-di/index.md +6 -5
  54. package/docs/examples/generic-di/main.md +9 -39
  55. package/docs/examples/generic-di/types.md +23 -92
  56. package/docs/examples/generics/index.md +6 -5
  57. package/docs/examples/generics/main.md +10 -47
  58. package/docs/examples/generics/types.md +25 -100
  59. package/docs/examples/hello/app/export.md +4 -12
  60. package/docs/examples/hello/app/greeter.md +13 -91
  61. package/docs/examples/hello/dependencies/august/0.20.1/io/contracts.md +178 -0
  62. package/docs/examples/hello/index.md +17 -6
  63. package/docs/examples/hello/logging/console.md +10 -54
  64. package/docs/examples/hello/logging/export.md +4 -14
  65. package/docs/examples/hello/logging/logger.md +7 -45
  66. package/docs/examples/hello/main.md +9 -39
  67. package/docs/examples/http-benchmark/index.md +6 -5
  68. package/docs/examples/http-benchmark/main.md +6 -20
  69. package/docs/examples/http-benchmark/routes.md +9 -31
  70. package/docs/examples/index.md +46 -29
  71. package/docs/examples/interceptors/app.md +20 -139
  72. package/docs/examples/interceptors/dependencies/august/0.20.1/io/contracts.md +178 -0
  73. package/docs/examples/interceptors/index.md +6 -5
  74. package/docs/examples/interceptors/interceptors.md +24 -148
  75. package/docs/examples/interceptors/logging.md +13 -76
  76. package/docs/examples/interceptors/main.md +10 -65
  77. package/docs/examples/json-benchmark/data.md +4 -20
  78. package/docs/examples/json-benchmark/dependencies/packages/@git/url_2d3c37c690c0fa115be1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.md +67 -0
  79. package/docs/examples/json-benchmark/index.md +7 -5
  80. package/docs/examples/json-benchmark/main-yaml.md +20 -0
  81. package/docs/examples/json-benchmark/main.md +10 -49
  82. package/docs/examples/new-syntax/console.md +10 -52
  83. package/docs/examples/new-syntax/dependencies/august/0.20.1/io/contracts.md +178 -0
  84. package/docs/examples/new-syntax/greeter.md +13 -71
  85. package/docs/examples/new-syntax/index.md +6 -5
  86. package/docs/examples/new-syntax/logger.md +7 -43
  87. package/docs/examples/new-syntax/main.md +10 -53
  88. package/docs/examples/new-syntax/math.md +6 -24
  89. package/docs/examples/oidc-login/client/contracts.md +10 -61
  90. package/docs/examples/oidc-login/client/endpoints.md +32 -154
  91. package/docs/examples/oidc-login/client/export.md +5 -23
  92. package/docs/examples/oidc-login/client/login.md +234 -344
  93. package/docs/examples/oidc-login/client/logout.md +38 -143
  94. package/docs/examples/oidc-login/client/protocol.md +183 -304
  95. package/docs/examples/oidc-login/client/session.md +41 -149
  96. package/docs/examples/oidc-login/client/views.md +13 -58
  97. package/docs/examples/oidc-login/common/export.md +6 -26
  98. package/docs/examples/oidc-login/common/headers.md +42 -72
  99. package/docs/examples/oidc-login/common/keys.md +40 -164
  100. package/docs/examples/oidc-login/common/settings.md +24 -40
  101. package/docs/examples/oidc-login/common/views.md +7 -28
  102. package/docs/examples/oidc-login/dependencies/packages/@git/url_0eb7c89453c87681ed15/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/store.md +205 -0
  103. package/docs/examples/oidc-login/dependencies/packages/@git/url_2d3c37c690c0fa115be1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.md +67 -0
  104. package/docs/examples/oidc-login/dependencies/packages/@git/url_897efafd565158fc4908/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.md +267 -0
  105. package/docs/examples/oidc-login/dependencies/packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/contracts.md +415 -0
  106. package/docs/examples/oidc-login/dependencies/packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/jose.md +271 -0
  107. package/docs/examples/oidc-login/dependencies/packages/@git/url_c092cd151499c4e1d8a1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.md +89 -0
  108. package/docs/examples/oidc-login/index.md +8 -7
  109. package/docs/examples/oidc-login/main-yaml.md +7 -0
  110. package/docs/examples/oidc-login/main.md +26 -153
  111. package/docs/examples/oidc-login/provider/authorization.md +232 -275
  112. package/docs/examples/oidc-login/provider/contracts.md +24 -146
  113. package/docs/examples/oidc-login/provider/credentials.md +24 -57
  114. package/docs/examples/oidc-login/provider/discovery.md +48 -122
  115. package/docs/examples/oidc-login/provider/export.md +11 -37
  116. package/docs/examples/oidc-login/provider/token.md +159 -237
  117. package/docs/examples/oidc-login/provider/userinfo.md +47 -102
  118. package/docs/examples/oidc-login/provider/views.md +13 -53
  119. package/docs/examples/ownership/counter.md +17 -63
  120. package/docs/examples/ownership/index.md +6 -5
  121. package/docs/examples/ownership/main.md +7 -30
  122. package/docs/examples/ownership-transfer/dependencies/august/0.20.1/io/contracts.md +178 -0
  123. package/docs/examples/ownership-transfer/index.md +6 -5
  124. package/docs/examples/ownership-transfer/main.md +10 -52
  125. package/docs/examples/ownership-transfer/resource.md +15 -67
  126. package/docs/examples/packages-app/dependencies/packages/@example/aug-math/0.1.0/arithmetic.md +12 -50
  127. package/docs/examples/packages-app/index.md +7 -6
  128. package/docs/examples/packages-app/main.md +7 -25
  129. package/docs/examples/packages-math/aug-package-json.md +1 -1
  130. package/docs/examples/packages-math/index.md +7 -6
  131. package/docs/examples/packages-math/src/arithmetic.md +12 -50
  132. package/docs/examples/packages-math/src/export.md +4 -12
  133. package/docs/examples/startup-benchmark/index.md +6 -5
  134. package/docs/examples/startup-benchmark/main.md +5 -17
  135. package/docs/examples/visibility/counter.md +19 -67
  136. package/docs/examples/visibility/index.md +6 -5
  137. package/docs/examples/visibility/main.md +7 -31
  138. package/docs/examples/weather-api/forecasts.md +168 -0
  139. package/docs/examples/weather-api/index.md +42 -0
  140. package/docs/examples/weather-api/main-yaml.md +21 -0
  141. package/docs/examples/weather-api/main.md +65 -0
  142. package/docs/examples.json +10 -0
  143. package/docs/getting-started.md +105 -2
  144. package/docs/grammar.md +6 -4
  145. package/docs/guides/change-a-module.md +64 -0
  146. package/docs/guides/index.md +27 -0
  147. package/docs/index.md +51 -29
  148. package/docs/language-conformance.md +1 -1
  149. package/docs/language-constructs.md +22 -22
  150. package/docs/language-design-audit.md +1 -1
  151. package/docs/learn/data-and-errors.md +77 -0
  152. package/docs/learn/index.md +30 -0
  153. package/docs/learn/modules-and-dependencies.md +73 -0
  154. package/docs/learn/state-and-tests.md +71 -0
  155. package/docs/learn/values-and-functions.md +62 -0
  156. package/docs/lesson-failures.json +8 -0
  157. package/docs/maintaining-docs.md +16 -4
  158. package/docs/packages.md +72 -126
  159. package/docs/performance.md +13 -41
  160. package/docs/production-readiness.md +5 -4
  161. package/docs/public/downloads/approved-design.zip +0 -0
  162. package/docs/public/downloads/benchmark.zip +0 -0
  163. package/docs/public/downloads/cli-args.zip +0 -0
  164. package/docs/public/downloads/collections-benchmark.zip +0 -0
  165. package/docs/public/downloads/collections.zip +0 -0
  166. package/docs/public/downloads/cpu-benchmark.zip +0 -0
  167. package/docs/public/downloads/developer-workflow.zip +0 -0
  168. package/docs/public/downloads/drop.zip +0 -0
  169. package/docs/public/downloads/errors.zip +0 -0
  170. package/docs/public/downloads/ffi.zip +0 -0
  171. package/docs/public/downloads/generic-di.zip +0 -0
  172. package/docs/public/downloads/generics.zip +0 -0
  173. package/docs/public/downloads/hello.zip +0 -0
  174. package/docs/public/downloads/http-benchmark.zip +0 -0
  175. package/docs/public/downloads/interceptors.zip +0 -0
  176. package/docs/public/downloads/json-benchmark.zip +0 -0
  177. package/docs/public/downloads/new-syntax.zip +0 -0
  178. package/docs/public/downloads/oidc-login.zip +0 -0
  179. package/docs/public/downloads/ownership-transfer.zip +0 -0
  180. package/docs/public/downloads/ownership.zip +0 -0
  181. package/docs/public/downloads/packages-app.zip +0 -0
  182. package/docs/public/downloads/packages-math.zip +0 -0
  183. package/docs/public/downloads/startup-benchmark.zip +0 -0
  184. package/docs/public/downloads/visibility.zip +0 -0
  185. package/docs/public/downloads/weather-api.zip +0 -0
  186. package/docs/reference.md +23 -17
  187. package/docs/releasing.md +29 -15
  188. package/docs/research/code-to-natural-language.md +108 -0
  189. package/docs/research/ecosystem-workflow.md +41 -0
  190. package/docs/research/wiki-editorial-design.md +71 -0
  191. package/docs/roadmap.md +1 -1
  192. package/docs/specifications.md +27 -11
  193. package/docs/testing.md +19 -5
  194. package/docs/tooling.md +25 -12
  195. package/docs/weather-api.md +65 -0
  196. package/docs/web.md +50 -18
  197. package/docs/writing-docs.md +49 -0
  198. package/examples/{hello/.aug-spec/august/0.19.0 → approved-design/.aug-spec/august/0.20.1}/io/contracts.aug +4 -3
  199. package/examples/approved-design/.aug-spec/august/0.20.1/io/contracts.aug.md +82 -0
  200. package/examples/approved-design/.aug-spec/manifest.json +3 -3
  201. package/examples/approved-design/counters.aug +5 -4
  202. package/examples/approved-design/counters.aug.md +25 -132
  203. package/examples/approved-design/domain/app.aug +2 -1
  204. package/examples/approved-design/domain/app.aug.md +10 -80
  205. package/examples/approved-design/domain/export.aug +1 -0
  206. package/examples/approved-design/domain/export.aug.md +4 -20
  207. package/examples/approved-design/domain/models.aug +1 -0
  208. package/examples/approved-design/domain/models.aug.md +3 -25
  209. package/examples/approved-design/domain/numbers.aug +3 -2
  210. package/examples/approved-design/domain/numbers.aug.md +19 -116
  211. package/examples/approved-design/main.aug +1 -0
  212. package/examples/approved-design/main.aug.md +12 -95
  213. package/examples/benchmark/.aug-spec/manifest.json +1 -1
  214. package/examples/benchmark/main.aug +1 -0
  215. package/examples/benchmark/main.aug.md +6 -36
  216. package/examples/cli-args/.aug-spec/manifest.json +1 -1
  217. package/examples/cli-args/main.aug +1 -0
  218. package/examples/cli-args/main.aug.md +5 -32
  219. package/examples/collections/.aug-spec/manifest.json +1 -1
  220. package/examples/collections/main.aug +1 -0
  221. package/examples/collections/main.aug.md +6 -36
  222. package/examples/{generic-di/.aug-spec/august/0.19.0 → developer-workflow/.aug-spec/august/0.20.1}/io/contracts.aug +4 -3
  223. package/examples/developer-workflow/.aug-spec/august/0.20.1/io/contracts.aug.md +82 -0
  224. package/examples/developer-workflow/.aug-spec/manifest.json +3 -3
  225. package/examples/developer-workflow/calculator.aug +3 -2
  226. package/examples/developer-workflow/calculator.aug.md +28 -189
  227. package/examples/developer-workflow/logging/console.aug +2 -1
  228. package/examples/developer-workflow/logging/console.aug.md +7 -57
  229. package/examples/developer-workflow/logging/export.aug +1 -0
  230. package/examples/developer-workflow/logging/export.aug.md +3 -15
  231. package/examples/developer-workflow/logging/logger.aug +1 -0
  232. package/examples/developer-workflow/logging/logger.aug.md +6 -46
  233. package/examples/developer-workflow/main.aug +1 -0
  234. package/examples/developer-workflow/main.aug.md +10 -68
  235. package/examples/drop/.aug-spec/manifest.json +1 -1
  236. package/examples/drop/main.aug +1 -0
  237. package/examples/drop/main.aug.md +6 -28
  238. package/examples/drop/resource.aug +1 -0
  239. package/examples/drop/resource.aug.md +6 -34
  240. package/examples/errors/.aug-spec/manifest.json +1 -1
  241. package/examples/errors/errors.aug +2 -1
  242. package/examples/errors/errors.aug.md +4 -27
  243. package/examples/errors/main.aug +1 -0
  244. package/examples/errors/main.aug.md +6 -29
  245. package/examples/ffi/.aug-spec/manifest.json +1 -1
  246. package/examples/ffi/main.aug +1 -0
  247. package/examples/ffi/main.aug.md +5 -21
  248. package/examples/ffi/native.aug +2 -1
  249. package/examples/ffi/native.aug.md +5 -35
  250. package/examples/{approved-design/.aug-spec/august/0.19.0 → generic-di/.aug-spec/august/0.20.1}/io/contracts.aug +4 -3
  251. package/examples/generic-di/.aug-spec/august/0.20.1/io/contracts.aug.md +82 -0
  252. package/examples/generic-di/.aug-spec/manifest.json +3 -3
  253. package/examples/generic-di/main.aug +1 -0
  254. package/examples/generic-di/main.aug.md +8 -40
  255. package/examples/generic-di/types.aug +3 -2
  256. package/examples/generic-di/types.aug.md +18 -97
  257. package/examples/generics/.aug-spec/manifest.json +1 -1
  258. package/examples/generics/main.aug +1 -0
  259. package/examples/generics/main.aug.md +9 -48
  260. package/examples/generics/types.aug +4 -3
  261. package/examples/generics/types.aug.md +18 -104
  262. package/examples/{developer-workflow/.aug-spec/august/0.19.0 → hello/.aug-spec/august/0.20.1}/io/contracts.aug +4 -3
  263. package/examples/hello/.aug-spec/august/0.20.1/io/contracts.aug.md +82 -0
  264. package/examples/hello/.aug-spec/manifest.json +3 -3
  265. package/examples/hello/app/export.aug +1 -0
  266. package/examples/hello/app/export.aug.md +3 -13
  267. package/examples/hello/app/greeter.aug +2 -1
  268. package/examples/hello/app/greeter.aug.md +10 -94
  269. package/examples/hello/logging/console.aug +2 -1
  270. package/examples/hello/logging/console.aug.md +7 -55
  271. package/examples/hello/logging/export.aug +1 -0
  272. package/examples/hello/logging/export.aug.md +3 -15
  273. package/examples/hello/logging/logger.aug +1 -0
  274. package/examples/hello/logging/logger.aug.md +6 -48
  275. package/examples/hello/main.aug +1 -0
  276. package/examples/hello/main.aug.md +8 -40
  277. package/examples/interceptors/.aug-spec/august/0.20.1/io/contracts.aug +37 -0
  278. package/examples/interceptors/.aug-spec/august/0.20.1/io/contracts.aug.md +82 -0
  279. package/examples/interceptors/.aug-spec/manifest.json +3 -3
  280. package/examples/interceptors/app.aug +3 -2
  281. package/examples/interceptors/app.aug.md +15 -141
  282. package/examples/interceptors/interceptors.aug +3 -2
  283. package/examples/interceptors/interceptors.aug.md +19 -152
  284. package/examples/interceptors/logging.aug +2 -1
  285. package/examples/interceptors/logging.aug.md +10 -79
  286. package/examples/interceptors/main.aug +1 -0
  287. package/examples/interceptors/main.aug.md +9 -66
  288. package/examples/new-syntax/.aug-spec/august/0.20.1/io/contracts.aug +37 -0
  289. package/examples/new-syntax/.aug-spec/august/0.20.1/io/contracts.aug.md +82 -0
  290. package/examples/new-syntax/.aug-spec/manifest.json +3 -3
  291. package/examples/new-syntax/console.aug +2 -1
  292. package/examples/new-syntax/console.aug.md +7 -53
  293. package/examples/new-syntax/greeter.aug +2 -1
  294. package/examples/new-syntax/greeter.aug.md +10 -74
  295. package/examples/new-syntax/logger.aug +1 -0
  296. package/examples/new-syntax/logger.aug.md +6 -46
  297. package/examples/new-syntax/main.aug +1 -0
  298. package/examples/new-syntax/main.aug.md +9 -54
  299. package/examples/new-syntax/math.aug +2 -1
  300. package/examples/new-syntax/math.aug.md +3 -24
  301. package/examples/oidc-login/.aug-spec/manifest.json +13 -13
  302. package/examples/oidc-login/.aug-spec/packages/@git/url_0eb7c89453c87681ed15/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/store.aug.md +71 -0
  303. package/examples/oidc-login/.aug-spec/packages/@git/url_2d3c37c690c0fa115be1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.aug.md +17 -0
  304. package/examples/oidc-login/.aug-spec/packages/@git/url_897efafd565158fc4908/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.aug.md +125 -0
  305. package/examples/oidc-login/.aug-spec/{august/0.19.0/crypto → packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40}/contracts.aug +12 -11
  306. package/examples/oidc-login/.aug-spec/packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/contracts.aug.md +244 -0
  307. package/examples/oidc-login/.aug-spec/{august/0.19.0/crypto → packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40}/jose.aug +6 -5
  308. package/examples/oidc-login/.aug-spec/packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/jose.aug.md +71 -0
  309. package/examples/oidc-login/.aug-spec/packages/@git/url_c092cd151499c4e1d8a1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.aug.md +30 -0
  310. package/examples/oidc-login/aug.lock.json +100 -0
  311. package/examples/oidc-login/client/contracts.aug +1 -0
  312. package/examples/oidc-login/client/contracts.aug.md +9 -66
  313. package/examples/oidc-login/client/endpoints.aug +6 -5
  314. package/examples/oidc-login/client/endpoints.aug.md +13 -145
  315. package/examples/oidc-login/client/export.aug +1 -0
  316. package/examples/oidc-login/client/export.aug.md +4 -24
  317. package/examples/oidc-login/client/login.aug +7 -6
  318. package/examples/oidc-login/client/login.aug.md +25 -303
  319. package/examples/oidc-login/client/logout.aug +5 -4
  320. package/examples/oidc-login/client/logout.aug.md +13 -135
  321. package/examples/oidc-login/client/protocol.aug +7 -6
  322. package/examples/oidc-login/client/protocol.aug.md +36 -283
  323. package/examples/oidc-login/client/session.aug +5 -4
  324. package/examples/oidc-login/client/session.aug.md +12 -139
  325. package/examples/oidc-login/client/views.aug +3 -2
  326. package/examples/oidc-login/client/views.aug.md +8 -57
  327. package/examples/oidc-login/common/export.aug +1 -0
  328. package/examples/oidc-login/common/export.aug.md +5 -27
  329. package/examples/oidc-login/common/headers.aug +4 -3
  330. package/examples/oidc-login/common/headers.aug.md +9 -67
  331. package/examples/oidc-login/common/keys.aug +6 -5
  332. package/examples/oidc-login/common/keys.aug.md +29 -165
  333. package/examples/oidc-login/common/settings.aug +2 -1
  334. package/examples/oidc-login/common/settings.aug.md +5 -39
  335. package/examples/oidc-login/common/views.aug +2 -1
  336. package/examples/oidc-login/common/views.aug.md +4 -28
  337. package/examples/oidc-login/main.aug +6 -16
  338. package/examples/oidc-login/main.aug.md +17 -146
  339. package/examples/oidc-login/main.yaml +7 -0
  340. package/examples/oidc-login/provider/authorization.aug +7 -6
  341. package/examples/oidc-login/provider/authorization.aug.md +23 -238
  342. package/examples/oidc-login/provider/contracts.aug +1 -0
  343. package/examples/oidc-login/provider/contracts.aug.md +23 -158
  344. package/examples/oidc-login/provider/credentials.aug +3 -2
  345. package/examples/oidc-login/provider/credentials.aug.md +9 -53
  346. package/examples/oidc-login/provider/discovery.aug +4 -3
  347. package/examples/oidc-login/provider/discovery.aug.md +11 -118
  348. package/examples/oidc-login/provider/export.aug +1 -0
  349. package/examples/oidc-login/provider/export.aug.md +6 -34
  350. package/examples/oidc-login/provider/token.aug +6 -5
  351. package/examples/oidc-login/provider/token.aug.md +16 -204
  352. package/examples/oidc-login/provider/userinfo.aug +4 -3
  353. package/examples/oidc-login/provider/userinfo.aug.md +10 -92
  354. package/examples/oidc-login/provider/views.aug +3 -2
  355. package/examples/oidc-login/provider/views.aug.md +8 -52
  356. package/examples/ownership/.aug-spec/manifest.json +1 -1
  357. package/examples/ownership/counter.aug +3 -2
  358. package/examples/ownership/counter.aug.md +12 -66
  359. package/examples/ownership/main.aug +1 -0
  360. package/examples/ownership/main.aug.md +6 -31
  361. package/examples/ownership-transfer/.aug-spec/august/0.20.1/io/contracts.aug +37 -0
  362. package/examples/ownership-transfer/.aug-spec/august/0.20.1/io/contracts.aug.md +82 -0
  363. package/examples/ownership-transfer/.aug-spec/manifest.json +3 -3
  364. package/examples/ownership-transfer/main.aug +1 -0
  365. package/examples/ownership-transfer/main.aug.md +9 -53
  366. package/examples/ownership-transfer/resource.aug +2 -1
  367. package/examples/ownership-transfer/resource.aug.md +12 -71
  368. package/examples/packages/app/.aug-spec/manifest.json +1 -1
  369. package/examples/packages/app/.aug-spec/packages/@example/aug-math/0.1.0/arithmetic.aug +2 -1
  370. package/examples/packages/app/.aug-spec/packages/@example/aug-math/0.1.0/arithmetic.aug.md +9 -51
  371. package/examples/packages/app/main.aug +1 -0
  372. package/examples/packages/app/main.aug.md +6 -26
  373. package/examples/packages/math/.aug-spec/manifest.json +1 -1
  374. package/examples/packages/math/aug-package.json +1 -1
  375. package/examples/packages/math/src/arithmetic.aug +2 -1
  376. package/examples/packages/math/src/arithmetic.aug.md +9 -51
  377. package/examples/packages/math/src/export.aug +1 -0
  378. package/examples/packages/math/src/export.aug.md +3 -13
  379. package/examples/visibility/.aug-spec/manifest.json +1 -1
  380. package/examples/visibility/counter.aug +4 -3
  381. package/examples/visibility/counter.aug.md +12 -68
  382. package/examples/visibility/main.aug +1 -0
  383. package/examples/visibility/main.aug.md +6 -32
  384. package/examples/weather-api/.aug-spec/manifest.json +8 -0
  385. package/examples/weather-api/AGENTS.md +17 -0
  386. package/examples/weather-api/README.md +19 -0
  387. package/examples/weather-api/forecasts.aug +47 -0
  388. package/examples/weather-api/forecasts.aug.md +32 -0
  389. package/examples/weather-api/main.aug +4 -0
  390. package/examples/weather-api/main.aug.md +15 -0
  391. package/examples/weather-api/main.yaml +5 -0
  392. package/examples/weather-api/weather.http +5 -0
  393. package/package.json +3 -4
  394. package/scripts/bootstrap-native.mjs +181 -106
  395. package/scripts/native-setup.mjs +98 -0
  396. package/scripts/native-toolchain.mjs +28 -0
  397. package/src/builtins.js +1 -1
  398. package/src/checker.js +259 -72
  399. package/src/cli.js +114 -20
  400. package/src/codegen.js +1 -1
  401. package/src/config.js +1 -1
  402. package/src/contracts.js +10 -0
  403. package/src/editor.js +71 -16
  404. package/src/fixes.js +90 -2
  405. package/src/formatter.js +19 -8
  406. package/src/git-packages.js +110 -0
  407. package/src/help.js +24 -23
  408. package/src/http-contracts.js +14 -0
  409. package/src/http-policies.js +5 -5
  410. package/src/libraries.js +1 -1
  411. package/src/lsp.js +14 -5
  412. package/src/native.js +19 -13
  413. package/src/navigation.js +4 -2
  414. package/src/openapi.js +5 -4
  415. package/src/package-locking.js +45 -0
  416. package/src/package-manager.js +251 -67
  417. package/src/parser.js +13 -5
  418. package/src/policies.js +3 -3
  419. package/src/project-init.js +78 -4
  420. package/src/project.js +9 -7
  421. package/src/semantic.js +46 -2
  422. package/src/snippets.js +59 -0
  423. package/src/spec-hints.js +56 -0
  424. package/src/spec-tree.js +241 -0
  425. package/src/spec.js +626 -303
  426. package/docs/examples/approved-design/dependencies/august/0.19.0/io/contracts.md +0 -395
  427. package/docs/examples/developer-workflow/dependencies/august/0.19.0/io/contracts.md +0 -395
  428. package/docs/examples/generic-di/dependencies/august/0.19.0/io/contracts.md +0 -395
  429. package/docs/examples/hello/dependencies/august/0.19.0/io/contracts.md +0 -395
  430. package/docs/examples/interceptors/dependencies/august/0.19.0/io/contracts.md +0 -395
  431. package/docs/examples/json-benchmark/dependencies/august/0.19.0/json/contracts.md +0 -103
  432. package/docs/examples/new-syntax/dependencies/august/0.19.0/io/contracts.md +0 -395
  433. package/docs/examples/oidc-login/dependencies/august/0.19.0/crypto/contracts.md +0 -925
  434. package/docs/examples/oidc-login/dependencies/august/0.19.0/crypto/jose.md +0 -434
  435. package/docs/examples/oidc-login/dependencies/august/0.19.0/json/contracts.md +0 -103
  436. package/docs/examples/oidc-login/dependencies/august/0.19.0/memory/store.md +0 -374
  437. package/docs/examples/oidc-login/dependencies/august/0.19.0/time/contracts.md +0 -150
  438. package/docs/examples/oidc-login/dependencies/august/0.19.0/web/contracts.md +0 -532
  439. package/docs/examples/ownership-transfer/dependencies/august/0.19.0/io/contracts.md +0 -395
  440. package/examples/approved-design/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
  441. package/examples/developer-workflow/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
  442. package/examples/generic-di/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
  443. package/examples/hello/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
  444. package/examples/interceptors/.aug-spec/august/0.19.0/io/contracts.aug +0 -36
  445. package/examples/interceptors/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
  446. package/examples/new-syntax/.aug-spec/august/0.19.0/io/contracts.aug +0 -36
  447. package/examples/new-syntax/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
  448. package/examples/oidc-login/.aug-spec/august/0.19.0/crypto/contracts.aug.md +0 -791
  449. package/examples/oidc-login/.aug-spec/august/0.19.0/crypto/jose.aug.md +0 -266
  450. package/examples/oidc-login/.aug-spec/august/0.19.0/json/contracts.aug.md +0 -55
  451. package/examples/oidc-login/.aug-spec/august/0.19.0/memory/store.aug.md +0 -250
  452. package/examples/oidc-login/.aug-spec/august/0.19.0/time/contracts.aug.md +0 -96
  453. package/examples/oidc-login/.aug-spec/august/0.19.0/web/contracts.aug.md +0 -420
  454. package/examples/ownership-transfer/.aug-spec/august/0.19.0/io/contracts.aug +0 -36
  455. package/examples/ownership-transfer/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
  456. /package/examples/oidc-login/.aug-spec/{august/0.19.0/memory → packages/@git/url_0eb7c89453c87681ed15/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301}/store.aug +0 -0
  457. /package/examples/oidc-login/.aug-spec/{august/0.19.0/json → packages/@git/url_2d3c37c690c0fa115be1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301}/contracts.aug +0 -0
  458. /package/examples/oidc-login/.aug-spec/{august/0.19.0/web → packages/@git/url_897efafd565158fc4908/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301}/contracts.aug +0 -0
  459. /package/examples/oidc-login/.aug-spec/{august/0.19.0/time → packages/@git/url_c092cd151499c4e1d8a1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301}/contracts.aug +0 -0
@@ -29,6 +29,7 @@ pageClass: aug-example-page
29
29
  ::: code-group
30
30
 
31
31
  ```aug [Indentation]
32
+ // aug-spec: "resource.aug.md" explains this file. Read it before changes; refresh with aug spec.
32
33
  Resource() implements IResource:
33
34
  drop():
34
35
  pass
@@ -37,6 +38,7 @@ interface IResource:
37
38
  ```
38
39
 
39
40
  ```aug [Braces]
41
+ // aug-spec: "resource.aug.md" explains this file. Read it before changes; refresh with aug spec.
40
42
  Resource() implements IResource {
41
43
  drop() {
42
44
  pass
@@ -55,40 +57,15 @@ interface IResource {
55
57
 
56
58
  ## Compiled specification {#specification}
57
59
 
58
- August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
60
+ ### `Resource` · class · [source](resource.md#code) {#symbol-Resource}
59
61
 
60
- ### In this file
62
+ It implements [`IResource`](resource.md#symbol-IResource).
61
63
 
62
- - [`Resource`](resource.md#symbol-Resource) is a class implementing `IResource`.
63
- - [`IResource`](resource.md#symbol-IResource) is an interface.
64
+ #### `Resource.drop` · [source](resource.md#code) {#symbol-Resource.drop}
64
65
 
65
- ### `Resource` {#symbol-Resource}
66
+ It continues without an operation.
66
67
 
67
- [source](resource.md#code)
68
-
69
- Behavioral class.
70
-
71
- Satisfies [`IResource`](resource.md#symbol-IResource).
72
-
73
- #### `Resource.drop` {#symbol-Resource.drop}
74
-
75
- [source](resource.md#code)
76
-
77
- Returns: no value.
78
-
79
- **What it does**
80
-
81
- - Continue without another operation.
82
-
83
- ### `IResource` {#symbol-IResource}
84
-
85
- [source](resource.md#code)
86
-
87
- Interface.
88
-
89
- ### Shared language rules
90
-
91
- See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
68
+ ### `IResource` · interface · [source](resource.md#code) {#symbol-IResource}
92
69
 
93
70
  ::::
94
71
 
@@ -29,14 +29,16 @@ pageClass: aug-example-page
29
29
  ::: code-group
30
30
 
31
31
  ```aug [Indentation]
32
- load(bool fail) returns string unless FileError:
32
+ // aug-spec: "errors.aug.md" explains this file. Read it before changes; refresh with aug spec.
33
+ load(bool fail):
33
34
  if fail:
34
35
  throw FileError()
35
36
  return "loaded"
36
37
  ```
37
38
 
38
39
  ```aug [Braces]
39
- load(bool fail) returns string unless FileError {
40
+ // aug-spec: "errors.aug.md" explains this file. Read it before changes; refresh with aug spec.
41
+ load(bool fail) {
40
42
  if fail {
41
43
  throw FileError()
42
44
  }
@@ -52,33 +54,11 @@ load(bool fail) returns string unless FileError {
52
54
 
53
55
  ## Compiled specification {#specification}
54
56
 
55
- August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
57
+ ### `load` · [source](errors.md#code) {#symbol-load}
56
58
 
57
- ### In this file
59
+ It takes `fail` as a boolean. Failures can raise `FileError`.
58
60
 
59
- - [`load`](errors.md#symbol-load) is a function returning `string`.
60
-
61
- ### `load` {#symbol-load}
62
-
63
- [source](errors.md#code)
64
-
65
- **Inputs**
66
-
67
- - `fail` (`bool`) — required labeled input.
68
-
69
- Returns: `string`.
70
-
71
- Can fail with `FileError`. Callers must catch or propagate these errors.
72
-
73
- **What it does**
74
-
75
- - If `fail` is true:
76
- - Fail with call `FileError`. Transfer control to a matching catch or propagate the failure.
77
- - Return `"loaded"`.
78
-
79
- ### Shared language rules
80
-
81
- See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
61
+ It checks that `fail` is false. It raises a `FileError` at the first failed check. It returns `"loaded"`.
82
62
 
83
63
  ::::
84
64
 
@@ -12,7 +12,7 @@ outline: [2, 3]
12
12
 
13
13
  Declare errors with unless, catch them, and run cleanup.
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/errors.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/errors
29
- aug spec examples/errors
30
- aug run examples/errors
28
+ cd errors
29
+ aug check .
30
+ aug spec .
31
+ aug run .
31
32
  ```
32
33
 
33
34
  [Browse all examples](../index.md)
@@ -29,6 +29,7 @@ pageClass: aug-example-page
29
29
  ::: code-group
30
30
 
31
31
  ```aug [Indentation]
32
+ // aug-spec: "main.aug.md" explains this file. Read it before changes; refresh with aug spec.
32
33
  import load from errors
33
34
  try:
34
35
  print(value=load(fail=true))
@@ -37,6 +38,7 @@ catch FileError error:
37
38
  ```
38
39
 
39
40
  ```aug [Braces]
41
+ // aug-spec: "main.aug.md" explains this file. Read it before changes; refresh with aug spec.
40
42
  import load from errors
41
43
  try {
42
44
  print(value=load(fail=true))
@@ -54,38 +56,15 @@ catch FileError error {
54
56
 
55
57
  ## Compiled specification {#specification}
56
58
 
57
- August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
59
+ ### Startup
58
60
 
59
- ### In this file
61
+ It prints [`load`](errors.md#symbol-load) with `fail` `true`. If this work raises `FileError`, it prints `"caught FileError"`.
60
62
 
61
- - Run startup operations with checked error recovery.
63
+ ### Dependencies
62
64
 
63
- ### Startup, in source order
65
+ It uses [`load`](errors.md#symbol-load) from `errors`.
64
66
 
65
- - Try these operations:
66
- - Call `print` with `value` = call [`load`](errors.md#symbol-load) with `fail` = `true`.
67
- - If they fail with `FileError`, name the failure `error` and recover:
68
- - Call `print` with `value` = `"caught FileError"`.
69
-
70
- ### Dependencies used by this file
71
-
72
- Only referenced types and operations appear here. Each name links to its complete specification.
73
-
74
- #### [`load`](errors.md#symbol-load)
75
-
76
- Function from `errors`.
77
-
78
- - [`load`](errors.md#symbol-load) (`fail`: `bool`) → `string`; can fail with `FileError`.
79
-
80
- ### Built-in operations used by this file
81
-
82
- - `print` (`value`: `any`) → `void`: Composition and test output. Other callables receive Console and declare uses console.write.
83
-
84
- [Full built-in reference](https://greenpandastudios.github.io/augscript/language-constructs).
85
-
86
- ### Shared language rules
87
-
88
- See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
67
+ Built-in operations follow the [language reference](https://greenpandastudios.github.io/augscript/language-constructs).
89
68
 
90
69
  ::::
91
70
 
@@ -12,7 +12,7 @@ outline: [2, 3]
12
12
 
13
13
  Declare a C operation and call it inside an unsafe block.
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/ffi.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/ffi
29
- aug spec examples/ffi
30
- aug run examples/ffi
28
+ cd ffi
29
+ aug check .
30
+ aug spec .
31
+ aug run .
31
32
  ```
32
33
 
33
34
  [Browse all examples](../index.md)
@@ -29,11 +29,13 @@ pageClass: aug-example-page
29
29
  ::: code-group
30
30
 
31
31
  ```aug [Indentation]
32
+ // aug-spec: "main.aug.md" explains this file. Read it before changes; refresh with aug spec.
32
33
  import announce from native
33
34
  announce()
34
35
  ```
35
36
 
36
37
  ```aug [Braces]
38
+ // aug-spec: "main.aug.md" explains this file. Read it before changes; refresh with aug spec.
37
39
  import announce from native
38
40
  announce()
39
41
  ```
@@ -46,29 +48,13 @@ announce()
46
48
 
47
49
  ## Compiled specification {#specification}
48
50
 
49
- August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
51
+ ### Startup
50
52
 
51
- ### In this file
53
+ It calls [`announce`](native.md#symbol-announce).
52
54
 
53
- - Run 1 other startup step in source order.
55
+ ### Dependencies
54
56
 
55
- ### Startup, in source order
56
-
57
- - Call [`announce`](native.md#symbol-announce).
58
-
59
- ### Dependencies used by this file
60
-
61
- Only referenced types and operations appear here. Each name links to its complete specification.
62
-
63
- #### [`announce`](native.md#symbol-announce)
64
-
65
- Function from `native`.
66
-
67
- - [`announce`](native.md#symbol-announce) (no caller inputs) → `void`; uses `C.puts`.
68
-
69
- ### Shared language rules
70
-
71
- See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
57
+ It uses [`announce`](native.md#symbol-announce) from `native`.
72
58
 
73
59
  ::::
74
60
 
@@ -29,15 +29,17 @@ pageClass: aug-example-page
29
29
  ::: code-group
30
30
 
31
31
  ```aug [Indentation]
32
+ // aug-spec: "native.aug.md" explains this file. Read it before changes; refresh with aug spec.
32
33
  extern C puts(string message) returns c_int
33
- announce() uses C.puts:
34
+ announce():
34
35
  unsafe:
35
36
  puts(message="hello from C FFI")
36
37
  ```
37
38
 
38
39
  ```aug [Braces]
40
+ // aug-spec: "native.aug.md" explains this file. Read it before changes; refresh with aug spec.
39
41
  extern C puts(string message) returns c_int
40
- announce() uses C.puts {
42
+ announce() {
41
43
  unsafe {
42
44
  puts(message="hello from C FFI")
43
45
  }
@@ -52,41 +54,13 @@ announce() uses C.puts {
52
54
 
53
55
  ## Compiled specification {#specification}
54
56
 
55
- August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
57
+ ### `puts` · [source](native.md#code) {#symbol-puts}
56
58
 
57
- ### In this file
59
+ It takes `message` as a string. It returns `c_int`. Native C implementation; only its declared contract is visible here.
58
60
 
59
- - [`puts`](native.md#symbol-puts) is a function returning `c_int`.
60
- - [`announce`](native.md#symbol-announce) is a function.
61
+ ### `announce` · [source](native.md#code) {#symbol-announce}
61
62
 
62
- ### `puts` {#symbol-puts}
63
-
64
- [source](native.md#code)
65
-
66
- **Inputs**
67
-
68
- - `message` (`string`) — required labeled input.
69
-
70
- Returns: `c_int`.
71
-
72
- Native C operation. Its declared inputs, result, effects, and errors are the visible contract. The C implementation is outside this specification.
73
-
74
- ### `announce` {#symbol-announce}
75
-
76
- [source](native.md#code)
77
-
78
- Returns: no value.
79
-
80
- Capabilities: `C.puts`.
81
-
82
- **What it does**
83
-
84
- - Enter an unsafe boundary. Native calls use their declared contracts; their foreign implementation is outside this specification:
85
- - Call [`puts`](native.md#symbol-puts) with `message` = `"hello from C FFI"`.
86
-
87
- ### Shared language rules
88
-
89
- See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
63
+ Within an unsafe block, it calls [`puts`](native.md#symbol-puts) with `message` `"hello from C FFI"`. Native operations must satisfy their declared C contracts.
90
64
 
91
65
  ::::
92
66
 
@@ -0,0 +1,178 @@
1
+ ---
2
+ title: "august/0.20.1/io/contracts.aug · Generic dependency injection"
3
+ generated: true
4
+ source: "examples/generic-di/.aug-spec/august/0.20.1/io/contracts.aug"
5
+ editLink: false
6
+ prev: false
7
+ next: false
8
+ outline: [2, 3]
9
+ search: false
10
+ pageClass: aug-example-page
11
+ ---
12
+
13
+ # `august/0.20.1/io/contracts.aug`
14
+
15
+ [Generic dependency injection](../../../../index.md) · Dependency source and specification
16
+
17
+ This is the exact dependency version used by this example.
18
+
19
+ ::::: example-compare
20
+
21
+ :::: example-code
22
+
23
+ ## Code {#code}
24
+
25
+ ::: code-group
26
+
27
+ ```aug [Indentation]
28
+ // aug-spec: "contracts.aug.md" explains this file. Read it before changes; refresh with aug spec.
29
+ /** Permission to write to a console, provided by an explicitly selected adapter. */
30
+ capability Console:
31
+ /** Write one line of text. @param value Text to display. */
32
+ write<T>(T value) uses Console.write
33
+ /** The native standard-output adapter. Construction performs no output. */
34
+ SystemConsole() implements Console:
35
+ write<T>(T value):
36
+ print(value=value)
37
+ /** Read UTF-8 text through an explicitly selected filesystem adapter. */
38
+ capability FileReader:
39
+ /** Read text. @param path File path. @throws FileError The file could not be read. */
40
+ read(string path) returns string uses FileReader.read unless FileError
41
+ /** Write UTF-8 text through an explicitly selected filesystem adapter. */
42
+ capability FileWriter:
43
+ /** Write text. @param path File path. @param content Text. @throws FileError Writing failed. */
44
+ write(string path, string content) uses FileWriter.write unless FileError
45
+ /** Native files. Operations are explicit; construction opens no files. */
46
+ LocalFiles() implements FileReader, FileWriter:
47
+ read(string path):
48
+ return read_file(path=path)
49
+ write(string path, string content):
50
+ write_file(path=path, content=content)
51
+ /** Read command-line input through an explicit dependency. */
52
+ capability Arguments:
53
+ read() returns List<string> uses Arguments.read
54
+ /** Native command-line arguments. */
55
+ ProcessArguments() implements Arguments:
56
+ read():
57
+ return arguments()
58
+ ```
59
+
60
+ ```aug [Braces]
61
+ // aug-spec: "contracts.aug.md" explains this file. Read it before changes; refresh with aug spec.
62
+ /** Permission to write to a console, provided by an explicitly selected adapter. */
63
+ capability Console {
64
+ /** Write one line of text. @param value Text to display. */
65
+ write<T>(T value) uses Console.write
66
+ }
67
+ /** The native standard-output adapter. Construction performs no output. */
68
+ SystemConsole() implements Console {
69
+ write<T>(T value) {
70
+ print(value=value)
71
+ }
72
+ }
73
+ /** Read UTF-8 text through an explicitly selected filesystem adapter. */
74
+ capability FileReader {
75
+ /** Read text. @param path File path. @throws FileError The file could not be read. */
76
+ read(string path) returns string uses FileReader.read unless FileError
77
+ }
78
+ /** Write UTF-8 text through an explicitly selected filesystem adapter. */
79
+ capability FileWriter {
80
+ /** Write text. @param path File path. @param content Text. @throws FileError Writing failed. */
81
+ write(string path, string content) uses FileWriter.write unless FileError
82
+ }
83
+ /** Native files. Operations are explicit; construction opens no files. */
84
+ LocalFiles() implements FileReader, FileWriter {
85
+ read(string path) {
86
+ return read_file(path=path)
87
+ }
88
+ write(string path, string content) {
89
+ write_file(path=path, content=content)
90
+ }
91
+ }
92
+ /** Read command-line input through an explicit dependency. */
93
+ capability Arguments {
94
+ read() returns List<string> uses Arguments.read
95
+ }
96
+ /** Native command-line arguments. */
97
+ ProcessArguments() implements Arguments {
98
+ read() {
99
+ return arguments()
100
+ }
101
+ }
102
+ ```
103
+
104
+ :::
105
+
106
+ ::::
107
+
108
+ :::: example-spec
109
+
110
+ ## Compiled specification {#specification}
111
+
112
+ ### `Console` · capability interface · [source](contracts.md#code) {#symbol-Console}
113
+
114
+ Permission to write to a console, provided by an explicitly selected adapter.
115
+
116
+ #### `Console.write` · [source](contracts.md#code) {#symbol-Console.write}
117
+
118
+ Write one line of text. The type parameters are `T`. It takes `value` as `T` (Text to display). It can call [`Console.write`](contracts.md#symbol-Console.write).
119
+
120
+ ### `SystemConsole` · class · [source](contracts.md#code) {#symbol-SystemConsole}
121
+
122
+ The native standard-output adapter. Construction performs no output. It implements [`Console`](contracts.md#symbol-Console).
123
+
124
+ #### `SystemConsole.write` · [source](contracts.md#code) {#symbol-SystemConsole.write}
125
+
126
+ Write one line of text. The type parameters are `T`. It takes `value` as `T` (Text to display). It prints `value`.
127
+
128
+ ### `FileReader` · capability interface · [source](contracts.md#code) {#symbol-FileReader}
129
+
130
+ Read UTF-8 text through an explicitly selected filesystem adapter.
131
+
132
+ #### `FileReader.read` · [source](contracts.md#code) {#symbol-FileReader.read}
133
+
134
+ Read text. It takes `path` as a string (File path).
135
+
136
+ It returns `string`. It can call [`FileReader.read`](contracts.md#symbol-FileReader.read). Failures can raise `FileError` (The file could not be read).
137
+
138
+ ### `FileWriter` · capability interface · [source](contracts.md#code) {#symbol-FileWriter}
139
+
140
+ Write UTF-8 text through an explicitly selected filesystem adapter.
141
+
142
+ #### `FileWriter.write` · [source](contracts.md#code) {#symbol-FileWriter.write}
143
+
144
+ Write text. It takes `path` as a string (File path) and `content` as a string (Text). It can call [`FileWriter.write`](contracts.md#symbol-FileWriter.write). Failures can raise `FileError` (Writing failed).
145
+
146
+ ### `LocalFiles` · class · [source](contracts.md#code) {#symbol-LocalFiles}
147
+
148
+ Native files. Operations are explicit; construction opens no files. It implements [`FileReader`](contracts.md#symbol-FileReader) and [`FileWriter`](contracts.md#symbol-FileWriter).
149
+
150
+ #### `LocalFiles.read` · [source](contracts.md#code) {#symbol-LocalFiles.read}
151
+
152
+ 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`.
153
+
154
+ #### `LocalFiles.write` · [source](contracts.md#code) {#symbol-LocalFiles.write}
155
+
156
+ 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`.
157
+
158
+ ### `Arguments` · capability interface · [source](contracts.md#code) {#symbol-Arguments}
159
+
160
+ Read command-line input through an explicit dependency.
161
+
162
+ #### `Arguments.read` · [source](contracts.md#code) {#symbol-Arguments.read}
163
+
164
+ It returns `List<string>`. It can call [`Arguments.read`](contracts.md#symbol-Arguments.read).
165
+
166
+ ### `ProcessArguments` · class · [source](contracts.md#code) {#symbol-ProcessArguments}
167
+
168
+ Native command-line arguments. It implements [`Arguments`](contracts.md#symbol-Arguments).
169
+
170
+ #### `ProcessArguments.read` · [source](contracts.md#code) {#symbol-ProcessArguments.read}
171
+
172
+ It returns `arguments`.
173
+
174
+ Built-in operations follow the [language reference](https://greenpandastudios.github.io/augscript/language-constructs).
175
+
176
+ ::::
177
+
178
+ :::::
@@ -12,7 +12,7 @@ outline: [2, 3]
12
12
 
13
13
  Bind a generic interface and resolve a class that uses it.
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/generic-di.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/generic-di
29
- aug spec examples/generic-di
30
- aug run examples/generic-di
28
+ cd generic-di
29
+ aug check .
30
+ aug spec .
31
+ aug run .
31
32
  ```
32
33
 
33
34
  [Browse all examples](../index.md)
@@ -29,6 +29,7 @@ pageClass: aug-example-page
29
29
  ::: code-group
30
30
 
31
31
  ```aug [Indentation]
32
+ // aug-spec: "main.aug.md" explains this file. Read it before changes; refresh with aug spec.
32
33
  import Console and SystemConsole from august.io
33
34
  implement Console with SystemConsole
34
35
  import Repository from types
@@ -41,6 +42,7 @@ program.start()
41
42
  ```
42
43
 
43
44
  ```aug [Braces]
45
+ // aug-spec: "main.aug.md" explains this file. Read it before changes; refresh with aug spec.
44
46
  import Console and SystemConsole from august.io
45
47
  implement Console with SystemConsole
46
48
  import Repository from types
@@ -60,51 +62,19 @@ program.start()
60
62
 
61
63
  ## Compiled specification {#specification}
62
64
 
63
- August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
65
+ ### Providers
64
66
 
65
- ### In this file
67
+ `Console` is provided by [`SystemConsole`](dependencies/august/0.20.1/io/contracts.md#symbol-SystemConsole). The same instance is shared. `Repository<int>` is provided by [`NumberRepository`](types.md#symbol-NumberRepository). The same instance is shared.
66
68
 
67
- - Register 3 dependency providers before startup.
68
- - Run 2 other startup steps in source order.
69
+ `app` is provided by [`Program`](types.md#symbol-Program). The same instance is shared. It requires bindings for `Repository<int>`.
69
70
 
70
- ### Dependency providers
71
+ ### Startup
71
72
 
72
- Register these providers before startup. Their declaration order does not set initialization order; shared instances initialize in dependency order.
73
+ It sets `program` to the instance provided for `app`. It calls [`program.start`](types.md#symbol-Program.start) using injected `Console` for `console`.
73
74
 
74
- - Provide [`SystemConsole`](dependencies/august/0.19.0/io/contracts.md#symbol-SystemConsole) when `Console` is requested. Reuse one instance.
75
- - Provide [`NumberRepository`](types.md#symbol-NumberRepository) when `Repository<int>` is requested. Reuse one instance.
76
- - Provide [`Program`](types.md#symbol-Program) when `app` is requested. Reuse one instance. Required dependencies: `Repository<int>`.
75
+ ### Dependencies
77
76
 
78
- ### Startup, in source order
79
-
80
- - Set `program` to the instance provided for `app`.
81
- - Call [`Program.start`](types.md#symbol-Program.start) on `program`; inject `console` from `Console`.
82
-
83
- ### Dependencies used by this file
84
-
85
- Only referenced types and operations appear here. Each name links to its complete specification.
86
-
87
- #### [`SystemConsole`](dependencies/august/0.19.0/io/contracts.md#symbol-SystemConsole)
88
-
89
- Class from `august.io`.
90
-
91
- Used as a type or provider.
92
-
93
- #### [`NumberRepository`](types.md#symbol-NumberRepository)
94
-
95
- Class from `types`.
96
-
97
- Used as a type or provider.
98
-
99
- #### [`Program`](types.md#symbol-Program)
100
-
101
- Class from `types`.
102
-
103
- - [`Program.start`](types.md#symbol-Program.start) (no caller inputs) → `void`; inject `console`: [`Console`](dependencies/august/0.19.0/io/contracts.md#symbol-Console); uses [`Console.write`](dependencies/august/0.19.0/io/contracts.md#symbol-Console.write).
104
-
105
- ### Shared language rules
106
-
107
- See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
77
+ It uses [`SystemConsole`](dependencies/august/0.20.1/io/contracts.md#symbol-SystemConsole) from `august.io`. It uses [`NumberRepository`](types.md#symbol-NumberRepository) and [`Program`](types.md#symbol-Program) ([`start`](types.md#symbol-Program.start)) from `types`.
108
78
 
109
79
  ::::
110
80